POST-bol erkezo adatok megtisztitasa
Szeretnek egy fugvenyt irni amely megtisztitja a POST-bol erkezet adatokat. Szeretnek minden olyan adatot megtisztitani amely veszelybe hozhatja a szkriptet.
El kene tavolitani a \ kartakereket, a HTML tagokat, es mas egyeb lehetseges dolgokat. Szeretnem ha mukodne a PHP trim fuggveny is, hogy a felesleges hezagokat ne vegye figyelembe.
Az en kodom elege gyenge, igy nez ki (csak a HTML tagokat tudja eltavolitani):Probaltam kiegesziteni de mindig errornak utkozok.
Tudnatok segiteni, egy jobb fuggvenyt megirni ? Nem akarok lama lenni de tenyleg nagy szuksegem lenne egy kis kodra amely tudom, hogy mukodik. Ettol fug az oldal biztonsaga.
Koszonom !
■ El kene tavolitani a \ kartakereket, a HTML tagokat, es mas egyeb lehetseges dolgokat. Szeretnem ha mukodne a PHP trim fuggveny is, hogy a felesleges hezagokat ne vegye figyelembe.
Az en kodom elege gyenge, igy nez ki (csak a HTML tagokat tudja eltavolitani):
<?php
function filterInput($var)
{
$input = strip_tags($var);
return $input;
}
$ezmarfilterezet = filterInput($_POST['username']);
?>
Tudnatok segiteni, egy jobb fuggvenyt megirni ? Nem akarok lama lenni de tenyleg nagy szuksegem lenne egy kis kodra amely tudom, hogy mukodik. Ettol fug az oldal biztonsaga.
Koszonom !
mindig errornak utkozok
Egyébként milyen error-ba ütközöl az idézett kód futattása közben?
Gyulus
a fugveny
Valami otlet?
a fugveny
Másodszor a mysql_real_escape_string pont arra való, hogy te'st-ből te\'st-et csináljon, hogy a mysql-ben el lehessen tárolni. Vagyis pont jól működik. Úgy tűnik, még magad sem tudod pontosan, hogy mit akarsz. :)
Gyulus
Ok
óvatosan
http://weblabor.hu/levlistak/wl-phplista/2006/03/049005
Azért mielőtt ilyesmit használsz gondold át jól. Egyrészt a /-ek eltávolítása csak úgy valszeg nem jó, csak akkor lehet indokolt, ha magic_quotes be van kapcsolva a gépeden. Plusz szintén szerintem rossz megközelítés az, hogy automatikusan megváltoztatom a bejövő adatokat. Ha a user rossz dolgot ír be, akkor vissza kell dobni neki, és leírni, hogy mi a gond, ellenkező esetben jönnek az olyan problémák, hogy a walter usernévből w lesz. Persze kényelmi funkciók (HTML tagek kitakarítása) beleférhet, a lényeg, hogy ne döntsünk a user helyett.
Felhő
OK
mysql_real_escape_string
Koszonom !
Mikor kell filterezni SQL injection ellen, csak akkor amikor a felhasznalo input fielden adatot bevisz ? Vagy erdemes minden SQL lekereshez beadnom a filterezett erteket ?
mysql_real_escape_string != addslashes
SQL Injection ellen meg akkor védekezz, ha adatbázisba írod az adatot, és nem bízol benne. Alapesetben semmiben nem bízunk. :)
Ez kb. olyan kérdés, mint a "mikor zárjam be az ajtómat?".
hello
Olvasd el amit itt ir:
http://www.askbee.net/articles/php/SQL_Injection/sql_injection.html
ráfogtam volna?
Nem igazán értem, miért mondod, hogy bármiféle hibát bármikor is ráfogtam az addslashes-re. :)
(Helyesen egyébként addslashes-re - nem kötekedni szeretnék, építő a kritika, épp ezért is csak ezt emeltem ki a nyelvtani hibák közül.)
Egyébként: mysql_escape_string()
És még egyszer mondom: az addslashes nem escape-el minden karaktert, amelyet adatbázisba íráskor escape-elni kell.
Korábban is leírtam már, amint erre előző bejegyzésemben utaltam.
én sem értelek
de php 4.3.0 előtt még mindig jobb az addslashes, mint a semmi vagy egy hibaüzenet...
az addslashes önmagában _nem_ megoldás!
Nem akartam ekkora feneket keríteni a dolognak, de világosan látnotok kell: az addslashes nem biztosítja az elvárt védelmet adatbázisokba írás esetén. Belinkeltem a bejegyzésem, ott vannak benne felsorolva az escape-elt karakterek (látványos a különbség).
Ha feltétlenül az addslashes-zel akarjátok megoldani, vagy PHP 3.0-tól felfelé mindennel mennie kell :), akkor tessék a metszeten kívül eső karakterekre is figyelni.
Tehát:
php verziók
neked nem is kell, valakinek viszont nincs más megoldása. ismerek olyan - igen nagy látogatottságú - hazai oldalt, ahol php 4 (ez sem...) és mysql 3.23 (... és ez sem elírás) van a szerveren és nem is akartak frissíteni, mert szerintük az jó.
gex
ez most érv?
Baromira nem a verziókon van a hangsúly! A lényeg az, hogy lehet PHP 3-tól felfelé kompatibilis, korrekt kódot írni, de amit írtatok, az nem az. Igaz?
számomra ez nem vita
segítek: igen. te azzal érveltél, hogy hadd ne használjál 4.0.3 alatti php verziót. ez szerinted érv? szerintem egy nevetséges hozzászólás. mondhatnám azt is, hogy hadd ne dolgozzak már php 4.x-szel. ennek ellenére válaszoltam neked, hogy igenis vannak olyan helyzetek, mikor nem lehet mysql_real_escape_stringet használni. (és mielőtt ideírnád, mysql_escape_stringet sem.)
... és ennek részét képezi az addslashez függvény használata. igaz, nem önmagában, de kiindulási alapnak jó volt nyolcas hozzászólás. lehetne még javítani rajta, de aki idáig eljutott (gondolt a régebbi verziókra is), az lehet nem fog itt megállni. nem tudom miért van bizonyítási kényszered.
gex
A szakmai részt elismerted, a többi nem ide való
Egyrészt nem bizonygattam, hanem rámutattam.
Másrészt egy feltételes szerkezetben egyenértékűen használtátok a mysql_real_escape_stringgel, és nem hívtátok fel rá a figyelmet, hogy nem biztosít ugyanolyan védelmet.
Az általad idézett mondatom több okból sem érv volt: egyrészt bejegyzésem további részében leírtam, hogy lehet korrekten megoldani a problémát, másrészt arra hívtam fel ezzel a figyelmet, hogy nem szokásos, hogy a szervereken PHP 4.0.0 fusson. Ezzel tehát senkit nem akartam, nem is lehet meggyőzni - nem érv.
Említetted, hogy "valakinek viszont nincs más megoldása". Nyilván lehet találni ilyen szervereket, de korántsem ez az elterjedt! Mi több: akad nem egy más megoldása az ilyen helyzetbe kényszerülőknek - egyet például én írtam le fentebb.
Ráadásul olyan mondaton lovagolsz, ami a téma szempontjából messze nem lényegbevágó. Egyetlen dologra válaszoltál 14-es postodban a teljes bejegyzésemből, és az ez volt.
Nah, nagy nehezen idáig is eljutottunk. Pontosan ennyit mondtam jópár hozzászólással ezelőtt, mivel előtte nem hívtátok fel rá a figyelmet; ezt tekintetted "bizonygatásnak". :)
Aligha várható el kevésbé gyakorlott, jártas, stb. (nevezzük bárminek) webfejlesztőktől, hogy ezt átlássák, nekem meg épp volt annyi időm, hogy rávilágítsak.
Talán mert nincs?
Nekem nincs szükségem rá, hogy növesszem az e-péniszem. ,)
A fentiek fényében nem is erőltetem a témát, már csak azért sem, mert a szakmai jellegű pontokat nem cáfoltad meg, egyéb tekintetben meg kezdenek személyes hangnemet megütni a hozzászólásaid.
Kimondtad, amit ki kellett, részemről a téma lezárva.
Ha esetleg valamiben megbántottalak volna, vagy zavart volna némely hozzászólásom, ezúton kérem elnézésed.
"Maradok tisztelettel"
D.
valasz