• 9 odgovora
  • 3.282 pregleda
navodnici u bazi 27.11.2006. u 14:53 · pre 242 meseci #1
Pozdrav, imam problem sa unosom navodnika (") u mysql bazu. Na php.net-u sam nasao kod koji bi trebalo to da sredjuje:

$encoded=htmlspecialchars(str_replace('\\', '', $_POST[contributed_text]), ENT_QUOTEA);

To savrseno radi u lokalu, ali na netu javlja sledeci error:

Warning: htmlspecialchars() expects parameter 2 to be long, string given in /home/content/*/*/html/php_uploads/contribute_wish.php on line 180

U tom redu nalazi se upravo htmlspecialchars funkcija.
Ako postoji bolji nacin za sredjivanje pomenutog problema, bio bih zahvalan za savet. Pozz...
Re: navodnici u bazi 27.11.2006. u 23:56 · pre 242 meseci #4
Kad ima potrebe koristim add/stripslashes f-je...
Potpis
“I never think of the future - it comes soon enough.” - Albert Anštajn (Albert Einstein)
Re: navodnici u bazi 28.11.2006. u 02:12 · pre 242 meseci #5
Ja sam samo uklonio ENT_QUOTEA i sada sljaka OK. Nista mi nije jasno... Probacu i te vase solucije iako sam slab sa php-om, valjda ne moze biti tesko.

Nego pada mi na pamet drugi problem: Ako neko zlonamerno unese u formu recimo echo '<div>bla bla bla</div>, php ce to obraditi doslovce i napravice taj div, jel tako? Mislim neko moze tako da potpuno zezne koncepciju sajta. Koja je zastita od toga? Pozz...
Re: navodnici u bazi 28.11.2006. u 08:11 · pre 242 meseci #6
> Nego pada mi na pamet drugi problem: Ako neko zlonamerno unese u
> formu recimo echo '<div>bla bla bla</div>, php ce to obraditi
> doslovce i napravice taj div, jel tako? Mislim neko moze tako da
> potpuno zezne koncepciju sajta. Koja je zastita od toga? Pozz...

Ako se tako nešto unese u formu ne može da ti zezne ništa pošto se to prebacuje u promenljivu (osim ako ne izvršiš to sa eval). Ako hoćeš da izbaciš sve html i php tagove iz stringa pogledaj funkciju strip_tags.

Poslušaj ostale savete i koristi add/strip slashes kada upisuješ i vadiš podatke iz baze.
Potpis
Planets devastated
Mankind's on its knees
A saviour comes from out the skies
In answer to their pleas...

M.R. J.A.C.K
Re: navodnici u bazi 28.11.2006. u 09:07 · pre 242 meseci #7
[ netačno rešenje ]

[Ovu poruku je menjao Neohacker dana 29.11.2006. u 10:02 GMT+1]

[Ovu poruku je menjao Nemanja Avramović dana 29.11.2006. u 13:04 GMT+1]
Potpis
“I never think of the future - it comes soon enough.” - Albert Anštajn (Albert Einstein)
Re: navodnici u bazi 28.11.2006. u 11:24 · pre 242 meseci #8
Citat:
sekvoja: Nego pada mi na pamet drugi problem: Ako neko zlonamerno unese u formu recimo echo '<div>bla bla bla</div>, php ce to obraditi doslovce i napravice taj div, jel tako? Mislim neko moze tako da potpuno zezne koncepciju sajta. Koja je zastita od toga? Pozz...


Ako ti neko u bazu upiše: <div>bla bla bla</div>, ili još gore: <script>alert(document.cookie);</script> i ti to echo-uješ, taj HTML kod će se zaista izvršiti!
Dobro rešenje za ovo je korišćenje funkcije htmlspecialchars pre ispisa na stranicu kako bi se uneti kod ispisao takav kakav je, ili korišćenje funkcije strip_tags kako bi se skinuli tagovi iz teksta (onda bi <div>bla bla bla</bla> postalo "bla bla bla" a <script>alert(document.cookie);</script> bi postalo "alert(document.cookie);".
Potpis
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
Re: navodnici u bazi 28.11.2006. u 15:39 · pre 242 meseci #9
strip_tags sasvim lepo resava ovaj problem, hvala na odgovoru...
Re: navodnici u bazi 29.11.2006. u 09:01 · pre 242 meseci #10
Izgleda naša greška...
Ja nikad nisam to probao...
Pokuša ću to kad budem na rač.
Potpis
“I never think of the future - it comes soon enough.” - Albert Anštajn (Albert Einstein)
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme