بله میشه
function safe( &$value, $key ) {
$value = trim( $value );
$value = strip_tags( $value );
$value = htmlentities( $value, ENT_COMPAT, 'UTF-8' );
$value = stripslashes( $value );
$value = mysql_real_escape_string( $value );
}
array_walk_recursive( $_POST, 'safe' );
array_walk_recursive( $_GET, 'safe' );
trim رو هم خود بنده اضاف کردم در بسیاری موارد خوب هست
مثلا خیلی ها عادت دارند آخر نام کاربری یا پسورد خود اسپیس میزنند
اما این کد ممکنه فقط 1 جا برای شما مشکل ساز بشه
اون هم استفاده از اون توی بخش مدیریت هست (یا به طور کلی هر جا که لازم باشه کد html وارد بشه)
مثلا با این کد اگر مدیر در ادیتور متنی را وارد کند به طور خودکار تگ های html آن هم پاک میشود
برای این که تاپیک کامل بشه راه حل اون رو هم عرض میکنم:
function safe( &$value, $key ) {
$value = trim( $value );
if( strpos( $key, 'text' ) !== false ) {
$value = strip_tags( $value );
$value = htmlentities( $value, ENT_COMPAT, 'UTF-8' );
}
$value = stripslashes( $value );
$value = mysql_real_escape_string( $value );
}
array_walk_recursive( $_POST, 'safe' );
array_walk_recursive( $_GET, 'safe' );
این کد کارش اینه که اولا همه ورودی ها رو از نظر امنیتی چک میکنه
ثانیا چک میکنه اگر در اسم فیلد کلمه text وجود داشت اونوقت دستور strip_tags و htmlentities رو اجرا نمیکنه (این برای جاهایی خوبه که کد html هم میتونه وارد بشه)
بنابراین با استفاده از این کد کافیه که شما توی کل سیستمتون هرجایی ورود کد html مجاز بود در اسم فیلد کلمه text رو هم بکار ببرید و جاهایی که html مجاز نیست هم به هیچ وجه کلمه text رو در اسم فیلدتون بکار نبرید که باعث حمله xss نشه
با این کد به راحتی میتونید جلوی حملات sql injection و xss رو بگیرید ;)