הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   [עזרה]אבטחת אתר (https://hosts.co.il/forums/showthread.php?t=65040)

dabi 10-07-08 23:58

[עזרה]אבטחת אתר
 
שלום לכולם
אני בונה כרגע מערכת משתמשים ועליה ניהול תוכן
אבל כמובן שהבעיה היא פחות לבנות ויותר לאבטח
הבנתי שיש 2 סוגי בעיות עיקריות באבטחיה XSS
ו
SQL INJECTION

אשמח אם תפרטו לי על כל בעיה-ממה היא נוצרת ואם אפשר דוגמא לאיך אפשרי לפרוץ ככה אתר

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

mlnn 11-07-08 01:51

גוגל לא פועל היום?

kfir-d 11-07-08 08:46

mlinn אתה יודע מה מעצבן בתגובה שרשמת עכשיו?
אולי זה לא קשור לנושא אבל אני חייב להגיד את זה (גם אם התוצאה תהיה אזהרה או באן לכמה שעות)
ואני מאמין שיש עוד אנשים שחושבים כמוני
לפעמים שעושים חיפוש בגוגל על בעיות כאלה ואחרות מוצאים הרבה תוצאות מפורומים
ויצא לי להיתקל לא מעט בשאלה שרשמתי בגוגל ופורום הוסטס היה במקום הראשון עם אותה שאלה שחיפשתי
אתה יודע מה הייתה התגובה לשאלה של הגולש?
"גוגל לא פועל היום?" "חפש בגוגל" "כיום יש גוגל" ועוד...

מה גולש במקרה כזה יכול לעשות ?
אתם (הגולשים שכן יודעים) אמורים לעזור (זה המטרה של הפורום לא?) וככה להגדיל את המידע שיש באינטרנט

mlnn 11-07-08 10:30

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

kfir91 11-07-08 11:03

אתה עוטף כל get באתר קודם כל ב
htmlspecialchars כדי שזה ימנע שימוש בסקריפטים ב get שזה בעצם ההזרקות sql injection
וגם ב textarea אתה שם htmlspecialchars חפש את זה בגוגל תבדוק איך עושים את זה.
עוד טיפ ל get תעשה שליפה של ה ID הכי גבוה בטבלה שלך במסד ותעשה תנאי שאם ה ID שנכנס ל get יותר גבוה ממנו אז זה יציג דף שגוי ואם לא אז יציג את הדף שהוא צריך...
ככה זה ימנע הכנסת אותיות וכו' ל GET

קוד:

$id = htmlspecialchars($_GET['newsID']);

  $limitid = "SELECT MAX(ID) FROM news";
  $limitid2=mysql_query($limitid) or die("blah");
  $limitid3= mysql_result($limitid2, 0);

if ($id > $limitid3 || $id < 1)
{
echo "<br><br><div align='center'><img src='img/logo.jpg'><meta http-equiv=\"refresh\" content=\"1; url=$sl\" /> ";
exit();
}


Daniel 11-07-08 11:18

ציטוט:

נכתב במקור על ידי kfir91 (פרסם 649594)
אתה עוטף כל get באתר קודם כל ב
htmlspecialchars כדי שזה ימנע שימוש בסקריפטים ב get שזה בעצם ההזרקות sql injection
וגם ב textarea אתה שם htmlspecialchars חפש את זה בגוגל תבדוק איך עושים את זה.
עוד טיפ ל get תעשה שליפה של ה ID הכי גבוה בטבלה שלך במסד ותעשה תנאי שאם ה ID שנכנס ל get יותר גבוה ממנו אז זה יציג דף שגוי ואם לא אז יציג את הדף שהוא צריך...
ככה זה ימנע הכנסת אותיות וכו' ל GET

קוד:

$id = htmlspecialchars($_GET['newsID']);

  $limitid = "SELECT MAX(ID) FROM news";
  $limitid2=mysql_query($limitid) or die("blah");
  $limitid3= mysql_result($limitid2, 0);

if ($id > $limitid3 || $id < 1)
{
echo "<br><br><div align='center'><img src='img/logo.jpg'><meta http-equiv=\"refresh\" content=\"1; url=$sl\" /> ";
exit();
}


ציטוט:

אתה עוטף כל get באתר קודם כל ב
htmlspecialchars כדי שזה ימנע שימוש בסקריפטים ב get שזה בעצם ההזרקות sql injection
זה XSS, וזה לא מה שימנע SQL INJECTION.

ציטוט:

עוד טיפ ל get תעשה שליפה של ה ID הכי גבוה בטבלה שלך במסד ותעשה תנאי שאם ה ID שנכנס ל get יותר גבוה ממנו אז זה יציג דף שגוי ואם לא אז יציג את הדף שהוא צריך...
ככה זה ימנע הכנסת אותיות וכו' ל GET
מה? למה? זה באמת בזבוז משאבים נוראי. למה? תן לי סיבה אחת. שיכניס מצידי 1000001. איך זה יפגע בתפקוד המערכת?

ציטוט:

וגם ב textarea אתה שם htmlspecialchars חפש את זה בגוגל תבדוק איך עושים את זה.
מה? htmlspecialchars ל-textarea באופן מיוחד? למה באופן מיוחד?

ואני יכול לנחש למה אתה מתכוון, ובאמת - זה גם, אני אצטט את המגיב מהדיון השני - "שיטה מטופשת". זה בגלל שאתה עושה nl2br ואז htmlspecialchars. מה שהסברת לו זה איך לבזבז משאבים באופן לא יעיל.

זה נחמד ומבורך לעזור, אבל אל תטעה אותו.

dabi 11-07-08 12:27

סבבה אז אם אני משתמש ב htmlspecialchars אני מוגן לחלוטין מXSS???

kfir91 11-07-08 13:02

ציטוט:

נכתב במקור על ידי MasterT (פרסם 649596)
זה XSS, וזה לא מה שימנע SQL INJECTION.


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


מה? htmlspecialchars ל-textarea באופן מיוחד? למה באופן מיוחד?

ואני יכול לנחש למה אתה מתכוון, ובאמת - זה גם, אני אצטט את המגיב מהדיון השני - "שיטה מטופשת". זה בגלל שאתה עושה nl2br ואז htmlspecialchars. מה שהסברת לו זה איך לבזבז משאבים באופן לא יעיל.

זה נחמד ומבורך לעזור, אבל אל תטעה אותו.

אני משתמש ב id עם התנאי יותר לאסתטיקה ורצינות מאשר להגנה כי זה לא ממש מגן
ככה שאם לא קיים עמוד כזה הוא מראה דף עם שגיאה שאין עמוד כזה זה יותר רציני ככה.
דבר שני אפשר להכניס ב textarea סקריפטים. התג htmlspecialchars מונע את האפשרות הזאת. ולדבר הראשון שאמרת ברור שזה ימנע איך תוכל להכניס קודים שונים ל get עם יש על זה Htmlspeacilchars :\

עריכה וגם במשתמשים בתנאי הזה שרשמתי שם זה מונע אפשרות להכניס תווים לא חוקיים כמו ;,` וכו'.. (שמי שמבין בפריצות יודע שהתווים האלה הם חלק גדול)

Daniel 11-07-08 13:04

ציטוט:

נכתב במקור על ידי kfir91 (פרסם 649637)
אני משתמש ב id עם התנאי יותר לאסתטיקה ורצינות מאשר להגנה כי זה לא ממש מגן
ככה שאם לא קיים עמוד כזה הוא מראה דף עם שגיאה שאין עמוד כזה זה יותר רציני ככה.
דבר שני אפשר להכניס ב textarea סקריפטים. התג htmlspecialchars מונע את האפשרות הזאת. ולדבר הראשון שאמרת ברור שזה ימנע איך תוכל להכניס קודים שונים ל get עם יש על זה Htmlspeacilchars :\

למה פשוט לא לעשות שאם $DB->rows = 0.

באמת? שלח לי textarea, אני מכניס בה סקריפטים.

חיפשתי וחיפשתי, ואין שום פונקציה בשם htmlspeacilchars...

אם היה לי זמן הייתי גומר את התגובה בזה, אבל,
קוראים לזה SQL INJECTION.

kfir91 11-07-08 13:07

ציטוט:

נכתב במקור על ידי MasterT (פרסם 649640)
למה פשוט לא לעשות שאם $DB->rows = 0.

באמת? שלח לי textarea, אני מכניס בה סקריפטים.

חיפשתי וחיפשתי, ואין שום פונקציה בשם htmlspeacilchars...

אם היה לי זמן הייתי גומר את התגובה בזה, אבל,
קוראים לזה SQL INJECTION.

על מה אתה מדבר איפה אתה חי במאה ה 15
ברור שיש פונקצית htmlspeacilchars חפש בגוגל.
זה ב php זה מנטרל את התגי html שאתה כותב ב textarea ו get
אם אני שם את זה בtextarea אין סיכוי שאתה מכניס סקריפטים ניסיתי ולא הלך.


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

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