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

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 01-06-06, 05:47   # 1
-VladK-
הוסטסניון
 
-VladK-'s Avatar
 
מיני פרופיל
תאריך הצטרפות: Apr 2006
גיל: 34
הודעות: 2,182

-VladK- לא מחובר  

כיצד ניתן ללאבטחת את הGET?

כלומר...
ידוע שאפשר להוסיף קודים זדוניים בGET...כלומר במקום:
index.php?p=134
אפשר להחליף ת134 בOR למשל או כל דבר אחר...אז איך אני יכול לעשות שקודם שהPHP יבדוק אם מה שהוא קלד הוא 100% מספר? ידוע שיש לדוגמה את האות e שתכלס היא גם "מספר" כי יש לך במתמתיקה ערך מספרי...אז איך אני יכול לעשות כך שהוא יקח אך ורק מספרים ? (אהה ושאלו יהיו מספרים שלמים בלבד...)

אההה ויש לי עוד שאלה...
נגיד ואני רוצה לעשות הוצאה של נתונים מהמסד מID שנמצא בכתובת...כלומר אני נכנס ככה:
index.php?act=news&id=452
כיצד אני יכול לעשות כך שנגיד וכתבה מס' 452 לא נמצאת אז שידפיס שהכתבה לא נמצאת...

Last edited by -VladK-; 01-06-06 at 06:31..
  Reply With Quote
ישן 01-06-06, 06:45   # 2
omaniusd
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 823

omaniusd לא מחובר  

ציטוט:
נכתב במקור על ידי CriSis
כלומר...
ידוע שאפשר להוסיף קודים זדוניים בGET...כלומר במקום:
index.php?p=134
אפשר להחליף ת134 בOR למשל או כל דבר אחר...אז איך אני יכול לעשות שקודם שהPHP יבדוק אם מה שהוא קלד הוא 100% מספר? ידוע שיש לדוגמה את האות e שתכלס היא גם "מספר" כי יש לך במתמתיקה ערך מספרי...אז איך אני יכול לעשות כך שהוא יקח אך ורק מספרים ? (אהה ושאלו יהיו מספרים שלמים בלבד...)

אההה ויש לי עוד שאלה...
נגיד ואני רוצה לעשות הוצאה של נתונים מהמסד מID שנמצא בכתובת...כלומר אני נכנס ככה:
index.php?act=news&id=452
כיצד אני יכול לעשות כך שנגיד וכתבה מס' 452 לא נמצאת אז שידפיס שהכתבה לא נמצאת...
כלל ברזל-
אף פעם אל תבנה שאילתה באופן דינמי על-סמך ערכים שהשמשתמש מכניס, או יכול לשנות, ללא שזה עבר קודם מתודה לאימות הקלט.
ככה, תבטיח את עצמך כנגד חלק גדול מהבעיות.

כלל ברזל2-
תבנה דפי שגיאה מותאמים אישית לכל שגיאה שעלולה להיות.

מפה, זה כבר תלוי בארכיטקטורה של המערכת שלך.
  Reply With Quote
ישן 01-06-06, 07:29   # 3
-VladK-
הוסטסניון
 
-VladK-'s Avatar
 
מיני פרופיל
תאריך הצטרפות: Apr 2006
גיל: 34
הודעות: 2,182

-VladK- לא מחובר  

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

כלל ברזל2-
תבנה דפי שגיאה מותאמים אישית לכל שגיאה שעלולה להיות.

מפה, זה כבר תלוי בארכיטקטורה של המערכת שלך.
לא ממש הבנתי את הראשון...והשני כבר מוכן אצלי...על כל שגיאה יש לי כבר עמוד משלה....
  Reply With Quote
ישן 01-06-06, 07:52   # 4
בניה
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: נחושה
הודעות: 3,434

בניה לא מחובר  

ב"ה


א.POST מסוכן כמו GET, פשוט עם GET יותר קל להתעסק.
אל תיתן לאדם לראות את השגיאות שחוזרות מהמסד, בפיתוח זה דבר חשוב שתראה אותן אבל אחרי כן זה יכול להיות מאוד מסוכן.
אם אתה מצפה לקבל מספר תבדוק את זה עם is_numeric אם אתה מצפה לקבל מחרוזת תעשה החלפת תווים בעיתיים לתווי ה ASCII שלהם.
  Reply With Quote
ישן 01-06-06, 08:01   # 5
Eli-Hai
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 2,758

Eli-Hai לא מחובר  

צודק, היום המון אנשים מנסים למצוא באגים במערכות ופורטלים (בעיקר), ולרוב אפשר גם לנסות גם דרך ה$_GET, אך השגיאה שתופיעה ב$_GET בזמן שליפה לא כל כך קריטית לטעמי, ו.. יש מצב שזה יופיע רק אצל האדם שמנסה למצוא באגים ולהיעזר בהם, אבל בוא לא נהמר.

ישנן מספר פונקציות, אשר יעזרו לך לדעת אם ה$_GET מכיל -
  • אותיות (abc)
  • מספרים (123)
  • אותיות ומספרים (abc123)
ברגע שהוא מוצא אותיות, הוא יכול להדפיס שגיאה (הMySQL), וכך בעצם לגרום לשגיאות, אך אנחנו נחסום זאת עם פונקציה פשוטה, is_numeric().

הקוד הוא פשוט, וכתבתי לך קוד קל לדוגמא,
PHP קוד:
$page $_GET['p'];

if( empty(
$page) ) exit("Error: Costum Error.");
elseif( !
is_numeric($page) ) exit("Error: Costum Error."); 
מה שהוא בעצם עושה, תחילה הוא בודק אם ה$_GET שלנו ריק, אם הוא לא ריק, הוא בודק אם הוא מכיל אותיות, אם אחד מהתנאים יחזיר שגיאה, הוא בעצם יעצור את התוכנית, ולא יתן לה להמשיך. מה שחוסך עלינו שימוש בתנאי נוסף, לשיאלתה שתבוא לפלט העמוד.

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

EDIT
לגבי שאלתך השנייה, אני לא ממש הבנתי, אך בכל מקרה כתבתי הסבר, אממ, הבנתי מהשאלה, שאתה רוצה לדעת, אם קיים במסד הנתונים שלך מאמר / כתבה בעלת הID המצויין. עושים שימוש בmysql_num_rows() ובתנאי פשוט. כתבתי לך גם את השיאלתה וגם את השליפה, אם לא יעבוד, אני אעבוד על זה מאוחר יותר בlocalhost.

PHP קוד:
$id $_GET['id'];

$sql "SELECT * FROM `table` WHERE `id` = " $id;
$result mysql_query($sql) or die(mysql_error());

$count mysql_num_rows($result);
    if(
$count == 0) exit("Article don't exists");

while(
$output mysql_fetch_object($result))
    echo 
$output->article

Last edited by Eli-Hai; 01-06-06 at 08:07..
  Reply With Quote
ישן 01-06-06, 08:17   # 6
eLad
Fatal Error
 
eLad's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: localhost
גיל: 38
הודעות: 1,968

eLad לא מחובר  

בעיקרון במספרים זו דרך העבודה שלי:

קוד:
var nId = fCheckIsNumeric(Request.QueryString("nId")) || 0
הפונקציה fCheckIsNumeric מקבל ביטוי כלשהו (מחרוזת), מפרקת ממנו את כל מה שהוא לא מספר בעזרת RegExp ומחזירה מספר או Null, אם היא תחזיר null אז nId ייקבל 0 בהתאם לתנאי שרשום מעלה ואז בעצם המערכת תכנס ל EOF (לא נמצאו רשומות) ובזה פתרנו את הבעיה
__________________
eLad
  Reply With Quote
ישן 01-06-06, 10:37   # 7
Tomer
Whatever
 
Tomer's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 7,039
שלח הודעה באמצעות MSN אל Tomer Send a message via Skype™ to Tomer

Tomer לא מחובר  

PHP קוד:
$id mysql_escape_string($_GET['id']); 
יעשה לך את העבודה בד"כ בנוגע לאבטחה והזרקות בכתובת..
__________________
תומר
  Reply With Quote
ישן 01-06-06, 11:08   # 8
-VladK-
הוסטסניון
 
-VladK-'s Avatar
 
מיני פרופיל
תאריך הצטרפות: Apr 2006
גיל: 34
הודעות: 2,182

-VladK- לא מחובר  

ומה הוא עושה?
  Reply With Quote
השב

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


חוקי פירסום
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. הזמן כעת הוא 03:57.

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