PDA

View Full Version : سوال: آیا این تابع می تونه جلوی انواع حملات مخرب رو بگیره؟



idocsidocs
چهارشنبه 16 شهریور 1390, 23:08 عصر
من برای امنیت فیلدهایی که نباید به تگهای اچ تی ام ال اجازه ورود بدن از تابع زیر استفاده می کنم.

لطفا بگید که آیا راهی هست که این تابع رو دور زد؟

طرز کار این تابع به شکل زیر هست:
1- به کمک htmlentities جلوی کاراکترهای ویژه رو می گیرم.
2- به کمک str_replace فیلتر بیشتری اعمال می کنم.
3- به کمک real_scape_string کاراکترها رو اسکیپ می کنم.




public function privent_injection($input)
{
$lastarr[]='`';
//$lastarr[]='~';
$lastarr[]='!';
$lastarr[]='#';
$lastarr[]='$';
$lastarr[]='%';
//$lastarr[]='^';
$lastarr[]='*';
$lastarr[]='(';
$lastarr[]=')';
$lastarr[]='-';
$lastarr[]='=';
//$lastarr[]='+';
//$lastarr[]='{';
//$lastarr[]='}';
//$lastarr[]='[';
//$lastarr[]=']';
$lastarr[]=',';
$lastarr[]='.';
$lastarr[]='?';
$lastarr[]='/';
//$lastarr[]='|';
$lastarr[]='\x';

$mysec[]='\`';
//$mysec[]='\~';
$mysec[]='\!';
$mysec[]='\#';
$mysec[]='\$';
$mysec[]='\%';
//$mysec[]='\^';
$mysec[]='\*';
$mysec[]='\(';
$mysec[]='\)';
$mysec[]='\-';
$mysec[]='\=';
//$mysec[]='\+';
//$mysec[]='\{';
//$mysec[]='\}';
//$mysec[]='\[';
//$mysec[]='\]';
$mysec[]='\,';
$mysec[]='\.';
$mysec[]='\?';
$mysec[]='\/';
//$mysec[]='\|';
$mysec[]='\\x';

$htmlentit=htmlentities($input, ENT_QUOTES,'UTF-8');
$str_rep = str_replace($lastarr, $mysec, $htmlentit);
return $this->dbase->real_scape_string($str_rep);
}

binyaft
پنج شنبه 17 شهریور 1390, 12:27 عصر
شما و جناب mamali-mohammad ته امنیت رو در آوردید خدائی!
یعنی منطق خودتون اینطور میگه که ×!#@#$^%&* ها امنیت رو به میارن پایین یا جایی خوندین ؟ چرا باید حذف بشن ؟
خب شاید جایی لازم باشه که باید حذف بشن و برنامه اینو میخواد ، اما برای امنیت اصلا""" !
یه بار strip_tags کنی کل تگهای HTML میره رو هوا! نیازی به این کارا نیست که ...

idocsidocs
پنج شنبه 17 شهریور 1390, 12:36 عصر
شما و جناب mamali-mohammad ته امنیت رو در آوردید خدائی!
یعنی منطق خودتون اینطور میگه که ×!#@#$^%&* ها امنیت رو به میارن پایین یا جایی خوندین ؟ چرا باید حذف بشن ؟
خب شاید جایی لازم باشه که باید حذف بشن و برنامه اینو میخواد ، اما برای امنیت اصلا""" !
یه بار strip_tags کنی کل تگهای HTML میره رو هوا! نیازی به این کارا نیست که ...
این تابع هیچ کاراکتری رو حذف نمی کنه، فقط موقع ذخیره داده ها، یه بک اسلش به کاراکترها اضافه می کنه و موقع خوندن اطلاعالت این بک اسلشها رو حذف می کنه.