PDA

View Full Version : مشکل با فیلتر کردن کاراکترها در PHP



maryam.20
پنج شنبه 24 مرداد 1392, 18:42 عصر
سلام.
توی تیبلی که از سمت کاربر ورودی میگیره همچین کاراکتر هایی دیدم:

\'+response.write(9859142*9256938)+\'
../../../../../../../../../../etc/passwd
SomeCustomInjectedHeader:injected_by_wvs
cat /etc/passwd
http://some-inexistent-website.acu/s...g_name?%00.jpg (http://some-inexistent-website.acu/some_inexistent_file_with_long_name?%00.jpg)
${99692+99409}
print(md5(acunetix_wvs_security_test));
${@print(md5(acunetix_wvs_security_test))}
و...................

با اینکه از تابع mysql_real_escape_string هم استفاده کردم، فکر میکردم دیگه لازم نیست از validator استفاده کنم ... البته هنوز validator خوب و جمع و جور پیدا نکردم که فقط کاراکترهای نامعتبر رو شناسایی کنه و پیغام بده (اگه سراغ دارید لینک بدید ممنون میشم :چشمک: )
میخوام بدونم اینا کلن چی هستن و من باید چکار کنم که اینطوری نشه دیگه :لبخندساده:

AliRezaPro
جمعه 25 مرداد 1392, 01:46 صبح
کد مربوط به INSERT این بخش به همراه بعضی از توابع کنترلی رو برای بررسی بیشتر اینجا قرار بدید

b3hz4d
جمعه 25 مرداد 1392, 03:59 صبح
با سلام.گرامی این رشته هایی که گذاشتین مربوط به اسکنر acunetix هست.یه بنده خدایی این اسکنر رو روی سایت شما اجرا کرده.این اسکنر بر اساس pattern هایی که داره مقادیری که گذاشتین و موارد بسیار دیگری رو در تمامی فرم ها ، ورودی ها (post, get) تست میکنه.90% این ها مربوط به code execute میشه ، اگر ورودی های کاربر رو به یکی از توابع system , eval , passthru, .... ندادین ، مشکل خاصی نخواهید داشت.سه مورد رو میتونم پیشنهاد کنم :
1- اگر از یک فرم دارین مقادیر رو میگیرین ، captcha به فرم اضافه کنید.(جلوی bot ها رو هم میگیرین)
2- با توجه به نوع مقدار هر فیلد(integer, string, ....) از regular expression ها استفاده کنید.
3- قبل از چاپ کردن ورودی کاربر از htmlspecialchars استفاده کنید.