View Single Post
ישן 14-04-08, 18:48   # 1
reXtea
חבר מתקדם
 
reXtea's Avatar
 
מיני פרופיל
תאריך הצטרפות: Dec 2006
מיקום: באר שבע
גיל: 30
הודעות: 374
שלח הודעה באמצעות MSN אל reXtea

reXtea לא מחובר  

[PHP] מדריך קטן על זיהוי פרוקסי.

שלום לכולם,
לאחרונה חיפשתי דרכים למנוע ממשתמש להיכנס אל האתר באמצעות פרוקסי ... -> יש כאלה שלא מעוניינים שגולשים שמנסים להסתיר את זהותם יכנסו אל האתר ...
לאחר חיפוש ומציאת מספר דרכים החלטתי לשתף אתכם.

חשוב להשתמש במספר דרכים על-מנת לבצע הגנה מקיפה, מכוון שכל פרוקסי יכול לעקוף דרך מסויימת כך שאם נשתמש ביותר מדרך אחת אין סיכוי שמישהו יגלוש באתרינו עם פרוקסי.

דבר ראשון אנו נסרוק את המערך הגלובאלי $_SERVER שכאשר משתמשים בפרוקסי המערך מכיל מספר דברים שהם לא נמצאים כאשר לא משתמשים בפרוקסי, לפיכך אם נחפש אותם ונמצא אותם -> המשתמש משתמש בפרוקסי.

PHP קוד:
$headers = array('HTTP_VIA''HTTP_X_FORWARDED_FOR''HTTP_FORWARDED_FOR',
    
'HTTP_X_FORWARDED''HTTP_FORWARDED''HTTP_CLIENT_IP''HTTP_FORWARDED_FOR_IP',
    
'VIA''X_FORWARDED_FOR''FORWARDED_FOR''X_FORWARDED''FORWARDED',
    
'CLIENT_IP''FORWARDED_FOR_IP''HTTP_PROXY_CONNECTION');

foreach (
$headers as $i)
{
    if (
$_SERVER[$i])
        echo 
"proxy detected";

לאחר שעשינו את זה נעבור לשיטה הבאה,
ננסה להתחבר אל הIP של המשתמש (או שרת הפרוקסי) דרך פורט 80. IP של משתמש רגיל לא אמור להחזיר כלום על PORT 80 מכוון שפורט זה הוא פורט הHTTP - שכמובן משומש בד"כ לאתרים ולא למחשבים ביתיים רגילים.
IP שיחזיר משהו מפורט 80 ככל הנראה הוא פרוקסי.

PHP קוד:
if (@fsockopen($_SERVER['REMOTE_ADDR'], 80$errstr$errno1))
{
    echo 
"proxy detected";

אך שיטה זאת של התחברות לפורט 80 לא תמיד תעבוד מכמה סיבות לדוגמא שהמשתמש אולי מפעיל שרת בייתי על המחשב וזה עלול ליצור בעיות ... יש להשתמש בשיטה זו בחכמה.

מלבד זאת ישנם עוד מספר דרכים לבדוק האם משתמש גולש דרך פרוקסי וזה על-ידי סריקה שוב של חלקים במערך ה$_SERVER אך הפעם להתעמק במספר תאים שם שהם קיימים גם כאשר המשתמש גולש ללא פרוקסי אך הערך שלהם שונה.

בהצלחה לכולם,
אמיר פרידמן.
__________________
Amir fridman
-----------------------
Professional website developer.
xhtml, css, javascript, xml, ajax, php, mysql
  Reply With Quote