הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 09-07-10, 10:27   # 1
~The_Sultan~
חבר על
 
מיני פרופיל
תאריך הצטרפות: Oct 2008
הודעות: 771

~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."); 

Last edited by ~The_Sultan~; 09-07-10 at 10:33..
  Reply With Quote
ישן 09-07-10, 10:30   # 2
Hagaibl
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Jul 2010
הודעות: 214

Hagaibl לא מחובר  

ציטוט:
נכתב במקור על ידי ~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"
מה פתאום, כל הרעיון זה שהמתכנת ישמור איפשהו את המקור ואז ישווה לHTTP REFFER.
אני נותן טיפים לא מדריך חח.

ציטוט:
נכתב במקור על ידי nitsanbn צפה בהודעה
כתבה טובה כל הכבוד על ההשקעה!
מספר המלצות:



יש עוד כמה אי דיוקים קטנים (למה להשתמש ב INTVAL אם עשית בדיקה שהערך הוא נומרי? מה גם ש is_numeric מקבל סטרינגים כמו 10E10 ומאשר אותם בתור INT)
זה מה שידוע לי על CSRF, אם היה לי יותר ידע הייתי משתף אותו אבל אין לי ידע מושלם עוד בו, אני נתקלתי בו פעם אחת בחיי זה הכל.
לגבי השאר זאת אבטחה בסיסית לחלוטין, אין לאף אחד שימוש כאן לעשות באבטחה מושלמת אנשים כאן בונים דברים פשוטים ואני נותן טיפים לאנשים שמתחילים רק. אם זאת הייתה קהילה של מתכתנים שבונים מערכות יקרות שצריכות אבטחה יותר טובה הייתי משחרר כבר פונקציות הגנה.
__________________
בברכה,
חגי בלוך גדות.

Last edited by Hagaibl; 09-07-10 at 10:33..
  Reply With Quote
ישן 09-07-10, 14:10   # 3
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
ישן 09-07-10, 15:06   # 4
Shay Ben Moshe
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2007
הודעות: 1,397

Shay Ben Moshe לא מחובר  

כבוד על ההשקעה אבל הקודים שלך ממש לא חכמים...
PHP קוד:
$formString strip_tags(htmlspecialchars($_POST['string'])); 
גם מוחק וגם הופך תגים לתוויות מתאימות. צריך רק אחד מהם (אני אישית בעל htmlspecialchars).
PHP קוד:
$intValue is_numeric($_GET['id']) && intval($_GET['id']) > $_GET['id'] : die("Invalid id value"); 
נתחיל מזה שהפונקציה intval לא ממש יעילה ופה גם מיותרת אם אתה כבר יודע שהמשתנה הוא נומרי. הפתרון החכם הוא או להמיר לint ואז לוודא שהמספר אכן קיים בDB או להשתמש בescaping או משהו בסגנון.
PHP קוד:
$value strip_tags(htmlspecialchars(mysql_real_esace_string($_GET['string']))); 
אותו סיפור כמו קודם...
__________________
שי בן משה - בונה אתרים
חותך אתרים, ומתכנת צד לקוח וצד שרת.
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 

Tags
אבטחה, מדריך למתחילים, מדריך php


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 15:43.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ