PDA

View Full Version : سوال: فيلتر كردن كلمه



sinashahab
شنبه 20 خرداد 1391, 21:45 عصر
سلام

نميدونم اين سوال درست هست يا نه ولي ديدم بعضي جاها كه اين كارو ميكنه.

ميخواستم بدونم راهي هست كه بشه مثلا يه كلمه رو فيلتر كرد كه هرگز تو URL قرار نگيره يعني اگه تو URL باشه ّForbidden بده به طرف.

مثلا ما هاست رو به كلمه ي sina فيلتر كنيم و بعد اگه اينطور وارد شد :
http://,,,,.com/index.php?c=sina

مثلا چون تو URL كلمه Sina وارد شده اررور بده ؟

ravand
یک شنبه 21 خرداد 1391, 18:38 عصر
كار سختي نيست :

if($_GET['tedad']=="sina"){
header("Location:HTTP/1.0 404 Not Found");
exit;
}else{
$tedad=$_GET['tedad'];
}
الان اگه برم به اين ادرس :

http://localhost/8.php?tedad=sina
خطاي 404 ميده

ravand
یک شنبه 21 خرداد 1391, 18:43 عصر
ببخشيد به سوال شما دقت نكردم اينطوري كه معلوم هست شما ميخواي اين كار رو بكني كه امنيت رو برقرار كني. براي اين كار ميتوني از تابع is_numeric استفاده كني.

if((!isset($_GET['tedad'])) or ($_GET['tedad']=="") or (!is_numeric($_GET['tedad']))){
header("Location:HTTP/1.0 404 Not Found");
exit;
}else{
$tedad=$_GET['tedad'];
}
دستور بالا ميگه اگه انتخاب نشده باشه مقداري براي فيلد tedad يا خالي باشد يا نامساوي با عدد باشد برو به خطاي 404 و از صفحه خارج شو وگرنه مقدار رو به اين فيلد (tedad) ارسال كن.

sinashahab
یک شنبه 21 خرداد 1391, 23:30 عصر
مرسي دوست عزيز
آره اين ايني كه شما نوشتي واسه هر صفحه بايد بزاريم و تازه راه bypass هم داره.
يه راه بهتر پيدا كردم اونم اين كه تو .htaccess فولدر بنويسيم :


RewriteEngine on
RewriteRule .*sina.* - [F]


بعد اينطوري اگه هرجاي url سينا بكار برده باشه ، Forbidden ميده.
جاي F هرچي بزاريد اونجا ميره.

كسي راهي ميشناسه كه تو سيستم ويندوز هم بشه همچين كاري رو هم كرد؟ چون ويندوز وقتي apache نصب ميشه htaccess واسش معني نداره . نه؟!
اونجا راهي داره؟

sinashahab
یک شنبه 21 خرداد 1391, 23:38 عصر
ببخشيد به سوال شما دقت نكردم اينطوري كه معلوم هست شما ميخواي اين كار رو بكني كه امنيت رو برقرار كني. براي اين كار ميتوني از تابع is_numeric استفاده كني.

if((!isset($_GET['tedad'])) or ($_GET['tedad']=="") or (!is_numeric($_GET['tedad']))){
header("Location:HTTP/1.0 404 Not Found");
exit;
}else{
$tedad=$_GET['tedad'];
}
دستور بالا ميگه اگه انتخاب نشده باشه مقداري براي فيلد tedad يا خالي باشد يا نامساوي با عدد باشد برو به خطاي 404 و از صفحه خارج شو وگرنه مقدار رو به اين فيلد (tedad) ارسال كن.
راستي ببخشيد اون متد isnumeric راه دور زدن به هيچ وجه نداره ؟! يعني وجود راهي داره كه طرف چجوري وارد كنه كه از اين شرط بتونه رد بشه در حالي كه فقط عدد نفرستاده باشه؟!
هكر ها از اين كارا ميكنن خوب:متفکر:

رضا قربانی
دوشنبه 22 خرداد 1391, 02:17 صبح
این همون چیزیه که به دنبالشید :
در این پست کدها ارسال شده :
http://barnamenevis.org/showthread.php?283446-%D9%81%DB%8C%D9%84%D8%AA%D8%B1-%DA%A9%D8%B1%D8%AF%D9%86-%D8%A8%D8%B1%D8%AE%DB%8C-%DA%A9%D8%A7%D8%B1%DA%A9%D8%AA%D8%B1%D9%87%D8%A7-%D8%AF%D8%B1-php&p=1250344&viewfull=1#post1250344
در این پست هم یه توضیح کوچیک در موردش داده شده :
http://barnamenevis.org/showthread.php?300166-%D8%AA%D8%A7%D8%A8%D8%B9-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%DA%A9%D8%A7%D8%B1%D8%A7%DA%A9%D8%AA%D8%B1%D9%87%D 8%A7&p=1316577&viewfull=1#post1316577