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

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 04-08-09, 22:19   # 1
SniR-S
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Aug 2008
הודעות: 546

SniR-S לא מחובר  

אבטחת מידע, 2 שאלות וקצת עזרה

דבר ראשון, איך אני יכול לעשות שיהיה במשתה מסויים רק מספר ולא טקסט? (URL הזרקות)
דבר שני, איך אתם מאבטחים? עם איזה שיטות אתם עובדים נגד הזרקות?
אתם מסננים מילות SQL ? \:
אשמח לקבל קצת מידע לגבי זהתוה
  Reply With Quote
ישן 04-08-09, 22:40   # 2
Shillo
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Jun 2007
הודעות: 509

Shillo לא מחובר  

אם אתה רוצה לעשות משתנה מסויים רק מספר, זה לא אפשרי בPHP.
מה שכן, עם PHP 5 אתה יכול לסנן טיפוסים של ארגומנטים שמועברים לפונקציה, זה נקרא Type Hinting. למשל אתה יכול ליצור פונקציה כזו:
קוד:
function setNum(int $value)
{
   global $num ;
   $num = $value ;
}
אם תנסה להעביר לפונקציה ארגומנט שהוא לא מטיפוס מספר שלם (int / integer ), אז PHP יציג שגיאה. דוגמא:
קוד:
setNum("this is a string") // תחזיר שגיאה

$int = 32;
setNum($int) // לא תחזיר שגיאה, כי הארגומנט הוא 32 (טיפוס = מספר שלם = int / integer )
בקשר להגנה נגד הזרקות, הפיתרון הוא מאוד פשוט. לפני שאתה מוציא לפועל את השאילתת SQL שלך, אתה צריך להעביר את השאילתה דרך פונקציה מסויימת שמטפלת בתווים אסורים בתוך השאילתה. ( הפונקציה בסה"כ מוסיפה לוכסן אחורי "\" לפני התו האסור)
דרך נוספת לעשות את זה, זה עם ביטויים רגולרים, אבל אין צורך. בכל מקרה, בPHP לפי מה שאני בדקתי בכמה ממשקים של מסדי נתונים, יש בהם פונקציה שנקראת real_escape_string, למשל, אם אתה משתמש במסד mysql, אתה יכול להשתמש בפונקציה הזאתי
שתטפל בתווים האסורים בשאילתה שלך:
mysql_real_escape_string.

אם אתה רוצה פונקציה שלא דורשת עבודה עם מסד נתונים מסויים, אז קח:
קוד:
  	function real_escape_string( $unescaped_string ) {
  		$prepend_chars = array() ;
  		$prepend_chars["\\\x00"] = "\x00" ;
  		$prepend_chars["\\\n"] = "\n" ;
  		$prepend_chars["\\\r"] = "\r" ;
  		$prepend_chars['\\\''] = "'" ;
  		$prepend_chars["\\\""] = "\"" ;
  		$prepend_chars["\\\x1a"] = "\x1a" ;

  		foreach( $prepend_chars as $key => $value )
  			$unescaped_string = str_replace( $value, $key, $unescaped_string ) ;

  		return $unescaped_string ;
  	}
אם לא הבנת משהו תגיד לי.

Last edited by Shillo; 04-08-09 at 22:43..
  Reply With Quote
ישן 05-08-09, 09:22   # 3
SniR-S
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Aug 2008
הודעות: 546

SniR-S לא מחובר  

שאלה, לכל משתנה שנשלח לשאילתא אני אמור להצמיד הפונקציה mysql_real_escape_string ?
ומה עם שאילתות שאני מוציא? (שולח מהשרת למשתמש)
אגב לא הבנתי כ"כ את הפונקציה, הבנתי שהיא מסננת ירידת / שבירת שורה
מספרים הקסדצימלים, גרש וגרשיים מה זה אבל x1a ?, ואיך אני משתמש בה?
בצורה הזו זה בסדר?:
PHP קוד:
real_escape_string($name);
// או שאני חייב משתנה?
$name real_escape_string($name); 
  Reply With Quote
ישן 05-08-09, 09:47   # 4
Jerba
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Jun 2007
הודעות: 300

Jerba לא מחובר  

בקשר לשאלה הראשונה, במקום שיזרוק שגיאה..

אתה יכול לבדוק עם הפונקציה הזאת אם המשתנה מכיל רק מספרים: http://il.php.net/manual/en/function.is-numeric.php

בהצלחה
  Reply With Quote
ישן 05-08-09, 12:06   # 5
Shillo
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Jun 2007
הודעות: 509

Shillo לא מחובר  

ציטוט:
נכתב במקור על ידי Snir Shamka צפה בהודעה
שאלה, לכל משתנה שנשלח לשאילתא אני אמור להצמיד הפונקציה mysql_real_escape_string ?
ומה עם שאילתות שאני מוציא? (שולח מהשרת למשתמש)
אגב לא הבנתי כ"כ את הפונקציה, הבנתי שהיא מסננת ירידת / שבירת שורה
מספרים הקסדצימלים, גרש וגרשיים מה זה אבל x1a ?, ואיך אני משתמש בה?
בצורה הזו זה בסדר?:
PHP קוד:
real_escape_string($name);
// או שאני חייב משתנה?
$name real_escape_string($name); 
x1a אני לא בדיוק יודע, אבל אני יודע שזה ברשימת התווים המסוכנים של הSQL.

בקשר לקוד שכתבת, אם תכתוב רק real_escape_string($name); זה לא טוב, כי הפונקציה לא עובדת עם רפרנס והיא רק מחזירה ערך, זאת אומרת שאתה צריך לעבוד בצורה כזו:
קוד:
// סתם דוגמא, אתה יכול לשים פה מה שאתה רוצה
$name = $_GET['name'];
// אם אתה משתמש בפונקציה שלי
$name = real_escape_string($name);
  Reply With Quote
ישן 07-08-09, 09:26   # 6
SniR-S
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Aug 2008
הודעות: 546

SniR-S לא מחובר  

אקי, נגיד שזה בסדר עד עכשיו, אבל אני רוצה לאבטח הזרקות GET
לדוגמא אם יהיה במשתנה מסויים תו מסוכן הוא יפנה ישר לעמוד מסויים או יסנן אותו משהו כזה.
אני לא מצליח להכניס את הפונקציה mysql_real_escape_string למשתנה GET
זתומרת, זה לא מועיל היא לא עושה כלום ?
אני רוצה שלא יוכלו לפצל לי את השאילתא ובכלל לא לשלוח שאילתות במשתנים
לסנן את התווים שלהם ומילות שמורות..
  Reply With Quote
ישן 07-08-09, 09:39   # 7
intercooler3819
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jul 2008
הודעות: 1,056

intercooler3819 לא מחובר  

בנוגע למספרים
אתה יכול לקבל גם מספר שכולל את האות E ואני מניח שזה קצת גדול עליך ולא תכננת שיעבירו בכתובת.. זה היה עובר את הפונקציה של שילה אבל לא את זו:
PHP קוד:
<?php

function nitsanNumeric($v)
{
     return 
preg_match("~^[0-9]+$~"$v);
}
ואם אתה רוצה עם פונקציות מובנות של php אז יש לך את הפונקציה intval תחפש בגוגל
__________________
  Reply With Quote
ישן 07-08-09, 13:31   # 8
mayden
Авторитет
 
מיני פרופיל
תאריך הצטרפות: Apr 2006
הודעות: 2,556

mayden לא מחובר  

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

ציטוט:
" זוכרים בשביל ללמוד, יודעים בשביל ללמד, מבינים בשביל לתכנת.."
  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. הזמן כעת הוא 13:06.

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