View Single Post
ישן 09-07-10, 14:10   # 10
intercooler3819
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jul 2008
הודעות: 1,056

intercooler3819 לא מחובר  

ציטוט:
נכתב במקור על ידי ~The_Sultan~ צפה בהודעה
יפה, מדריך שיכול לעזור מאוד
ותן קצת קרדיט על ה-SQLI..

ובקשר ל-$_SERVER['HTTP_REFERER'], זה לא ממש מומלץ להשתמש בזה סתם ככה, כי זה יכול לגרום בעיות אם למשל שינית דומיין או אם אתה עובד עם כל כתובות אחרות שיכולות להשתנות.
בגדול עדיף אבטחה עם מסד או קוד CAPTCHA, אבל אם בכל זה מחליטים להשתמש בכתובת המפנה,
אני ממליץ להשתמש בפונקציה הזו:
http://php.net/manual/en/function.parse-url.php
אבל כאן עדיין יש חור, במקרה שהבנאדם ישים על השרת שלו את אותה הכתובת, ולכן, הנה קוד סופי:

PHP קוד:
global $config;

$ref $_SERVER['HTTP_REFERER'];
$current_ref "index.php?act=form&op=fill";
$divide parse_url($ref);
if ((
$divide['scheme']."://".$divide['host'] != $config['site_url']) && ($divide['path'] != $current_ref))
    die(
"False referrer."); 
ובמשתנה הגלובלי $config, צריך להיות משהו כזה:
PHP קוד:
$config['site_url'] == "http://google.com"


עריכה:
בהמשך למה שזה שמעליי אמר, בשביל לבדוק אם הערך מספרי בשיטה הכי תיקנית אפשר להשתמש בביטוי רגולארי פשוט:
PHP קוד:
if (preg_match("/[^0-9]/"$id))
    die(
"This is not a number."); 

CAPTCHA בכלל לא מיועד לפתירה של XSRF/CSRF

אפשר להשתמש בזה לזה.. אבל על כל טופס באתר תמקם CAPTCHA?

בנוסף - אין שום סיבה לא להשתמש ב REFERER - רק קח בחשבון שזה לא חובה שדפדפן ישלח REFERER וגם כל אחד יכול לשנות אותו בהתאם למצב רוח
__________________
  Reply With Quote