TwojePC.pl © 2001 - 2024
|
|
A R C H I W A L N A W I A D O M O Ś Ć |
|
|
|
mysql_escape_string dodaje mi niepotrzebny znak \ - slash , kubazzz 24/02/07 00:12 mamy taki oto kod:
$dodaj_tytul = mysql_escape_string($_POST['tytul']);
$dodaj_data = mysql_escape_string($_POST['data']);
$dodanie = "INSERT INTO $tabela (title,data) VALUES ('$dodaj_tytul','$dodaj_data')";
$result = mysql_query ($dodanie) or die ("Błąd: " . mysql_error());
...
to jest element kodu dodajacy tresc uzyskana metoda POST z formularza.
Problem jest taki, ze uzywacj mysql_escape_string uzycie znaku " [cudzyslow] albo ['] apostrof powoduje kosmos w bazie danych.
Oto wyczerpujacy przyklad.
W formularzu wpisuje tak:
<a href='hxxp://google.com'>Link</a>
<a href=\'hxxp://google.com\'>Link</a>
<a href="hxxp://google.com">Link</a>
<a href=\"hxxp://google.com\">Link</a>
<a href=''hxxp://google.com''>Link</a>
A to otrzymuje w podgladzie PHPMyAdmin albo po pobraniu z bazy danych:
<a href=\'hxxp://google.com\'>Link</a>
<a href=\\\'hxxp://google.com\\\'>Link</a>
<a href=\"hxxp://google.com\">Link</a>
<a href=\\\"hxxp://google.com\\\">Link</a>
<a href=\'\'hxxp://google.com\'\'>Link</a>
Jesli z kodu wyeliminuje mysql_escape_string to problemu nie ma.
Baza danych to MySQL 4.1.11, PHP4.SM-S908 - no qrdwa już ci mówiłem , john565 24/02/07 00:22
że str_replace zastosuj podczas odczytu z bazy, a to sie zqapisuje tak do bazy żeby nikt ci drop table nie zrobił
(cybva że sie myle :P)f*ck - hmm z tego co wiem , kubazzz 24/02/07 00:43
to w bazie danych powinno byc zapisane BEZ tych slashow \.
Tu jest problem w zapisie do bazy danych.
Wywalenie ich na pozniejszym etapie nie jest niewykonalne, ale upierdliwe.SM-S908 - z tego co ja wiem... , john565 24/02/07 00:57
możesz to zmienić w globalnych ustawieniach serwera gdzie leżą posczególne bazy, ale wtedy możliwe są ataki sql injectionf*ck
- problem wciaz nierozwiazany i licze na jakies wskazowki , kubazzz 24/02/07 13:03
dziekuje .SM-S908 - pewnie masz wlaczone standardowo Magic quotes , PaKu 24/02/07 13:05
na serwerze i robia ci sie podwojne slashe. Zrob tak:
if (!get_magic_quotes_gpc()) {
$dodaj_tytul = mysql_escape_string($_POST['tytul']);
$dodaj_data = mysql_escape_string($_POST['data']);
}
else{
$dodaj_tytul = $_POST['tytul'];
$dodaj_data = $_POST['data'];
}bez podpisu - hmm - wg phpinfo mam wlaczone ! , kubazzz 24/02/07 13:11
magic_quotes_gpc On On
Czyli moge wywalic to mysql_escape_string ?
bo raczej nie zmienie ustawien serwera, a skrypt bedzie tylko na tym serwerze dzialal.SM-S908 - dokladniej , kubazzz 24/02/07 13:12
magic_quotes_gpc On On
magic_quotes_runtime Off Off
magic_quotes_sybase Off OffSM-S908 - jesli nie bedziesz zmienial serwera , PaKu 24/02/07 13:15
to mozesz wyrzucic, ale ja na twoim miejscu staralbym sie pisac jak najbardziej uniwersalny kod, sam sie kilka razy nacialem na tym a pozniej musialem sleczec nad kodem i poprawiac. Zrob sobie np tak:
function Walidacja(string){
if (!get_magic_quotes_gpc()) {
return mysql_escape_string($string);
}
else{
}
}bez podpisu - kurde za wczesnie poczlo :/ , PaKu 24/02/07 13:18
function Walidacja(string){
if (!get_magic_quotes_gpc())
return mysql_escape_string($string);
else
return $string;
}
a pozniej
$dodaj_tytul = Walidacja($_POST['tytul']);bez podpisu - biorac pod uwage, ze kodu jest malutko , kubazzz 24/02/07 13:20
to nie stanowi wiekszego problemu wylapanie to, ale moze rzeczywiscie zrobie uniwersalne rozwiazanie.SM-S908
- dzieki! , kubazzz 24/02/07 14:25
dziala.SM-S908 |
|
|
|
|
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL |
|
|
|
|