לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ברוכים הבאים לפורום ASP חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > ASP
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
 
כלי אשכול חפש באשכול זה



  #4  
ישן 23-07-2008, 13:39
  רמי ד רמי ד אינו מחובר  
 
חבר מתאריך: 07.10.06
הודעות: 1,795
בתגובה להודעה מספר 3 שנכתבה על ידי orwb שמתחילה ב "תודה עוד שאלה לא קשורה איך..."

תלוי איזה פרמטרים אתה רוצה להעביר. זה לא משנה GET או POST.

אם אתה רוצה להעביר סתם מספר, (בנתוני GET לא מומלץ להעביר דברים אחרים) למשל ID של משהוא, אז בדוק עם הנתונים מכילים רק ספרות. ישנה פונקציה מובנת, IsNumeric, שהיא מחזירה לך True אם זה מספרי, ו-False, אם זה לא מספרי. בהתאם לנתונים שהעברת.
אם כי הפונקציה לא מושלמת, כי יש תווים שהיא תחזיר שהם גם מספרים. לכן, אני ממליץ לך בחום לבנות לך פונקציה משלך. (אם אתה מתקשה בזה, כתוב כאן, ואני אתן לך את הפונקציה שלי שהיא עובדת בכל המיקרים)


אם אתה רוצה לסנן נתונים שהם טקסט, ולא מספר, אז אתה יכול לעשות 2 דברים:
1. להגדיר אילו תווים מותר להשתמש, ואת השאר לא לאפשר. אם בנית פונקציה מתאימה כמו זו בדוגמא הקודמת, תוכל להסב אותה בקלות גם לזה.

2. לאפשר את כל התווים, ולחסום רק את אילה שעושים בעיות. שזה כמובן תלוי במסד שלך, אבל בעיקרון זה כל אלה: & ` # " ' , ( ) <> [] {} % = : @ !
שים לב!. אין צורך לסנן אותם. ניתן להמיר אותם ליוני-קוד.
דוגמא: "<" הופך ל- &lt; ו- "&" הופח ל-&amp;
(אם אתה רוצה, כתוב, ואני אתן לך גם את הפונקציה שלי)


בכל מיקרא, את הפונקציות, או את תנאי הסינון, מומלץ לשים בקובץ ניפרד, ולקרוא לו כשצריך.
דוגמא:
קוד:
<!--#INCLUDE FILE="filter.asp" -->

בהצלחה!
חזרה לפורום
  #6  
ישן 23-07-2008, 20:26
  משתמש זכר uninstall uninstall אינו מחובר  
 
חבר מתאריך: 11.11.01
הודעות: 1,751
בתגובה להודעה מספר 5 שנכתבה על ידי orwb שמתחילה ב "תודה רבה עובד"

שים לב רק ש IsNumeric מחזיר True גם על מחרוזת ריקה.
מבחינת הפונקציה הזו מחרוזת ריקה היא אפס ולכן מוחזר True.
בעיקרון הדרך הכי טובה למנוע הזרקות SQL או XSS זה להיות פרנואיד, הכוונה היא שבחיים אל תאמין שמשתמש יכניס את המידע שהוא אמור להכניס,
כל מידע שהמשתמש שולח הוא חשוד וכמעט בטוח שהוא מכיל משהו שעלול לדפוק לך את הקוד, עכשיו המטרה שלך היא לסרוק את המידע שאתה מקבל ולוודא שהוא לא מכיל שטויות (סימנים בעייתיים של SQL, תגיות HTML וכו').
כדאי שתחפש חומר על איך עושים SQL Injunction (מסתובב ברשת אפילו מאמר בעברית) ואז תבין איך זה עובד וגם אילו תוים אתה לא רוצה שיוכלו לרשום לך באתר.

לגבי קלט מהמשתמש, כל מה שאתה מקבל באמצעות האובייקט Request נחשב קלט מהמשתמש, גם אם אתה בטוח שאתה כתבת אותו (נניח שאתה מעביר ID בין 2 עמודים).
כל דבר שעובר דרך המשתמש יכול להיות נתון למניפולציות שלו (Get,Post,Cookies וכו') ואתה חייב לבדוק אותו.

חזרה לפורום
  #7  
ישן 25-07-2008, 16:57
  orwb orwb אינו מחובר  
 
חבר מתאריך: 10.06.08
הודעות: 26
בתגובה להודעה מספר 6 שנכתבה על ידי uninstall שמתחילה ב "שים לב רק ש IsNumeric מחזיר..."

תודה רבה.
XSS
חוסמים עם
Server.htmlencode
אני בטוח.
ויש לי עובד שאלה
תיראה את הקוד הבא:
קוד:
<% sql="Select ID, Max(USERNAME) as MaxUSERNAME From reg Group by ID" path=Server.MapPath("QPortalDbsemses1/md5sql.mdb") Set con=Server.CreateObject("ADODB.Connection") con.open"Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & path & ";" Set R=con.execute(sql) Do Until R.eof Response.write("בירכותנו למישתמש החדש:"&R.fields("USERNAME")&"") R.MoveNext Loop R.close Set R=Nothing %>

(אני מישתמש ב-אקסס בנתיים עד שאני יסתדר)

עכשיו אני מנסה לישלוף את האידיי החדש ביותר(זאת אומרת הגדול ביותר)
וזה נותן לי את הבעיה הזאת:
קוד:
Script error detected at line 188. Source line: Response.write("בירכותנו למישתמש החדש:"&R.fields("USERNAME")&"") Description: ‏‏הפריט לא נמצא באוסף המתאים לשם המבוקש או למספר הסודר המבוקש.


וזה לא יכול להיות א-username הוא קיים אני יכול להביא לך אפילו הדפס של הטבלה
חזרה לפורום
  #11  
ישן 27-07-2008, 20:13
  orwb orwb אינו מחובר  
 
חבר מתאריך: 10.06.08
הודעות: 26
בתגובה להודעה מספר 10 שנכתבה על ידי uninstall שמתחילה ב "IsNumeric זו פונקציה..."

לא ממש הבנתי אבל תראה מה אני עשיתי:
קוד:
<%@ Language=VBScript codepage=1255%> <% ID=IsNumeric (Request.QueryString("id")) Set conn = Server.CreateObject("ADODB.Connection") FilePath = Server.MapPath("db/data.mdb") Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & FilePath & ";" Set rs = Server.CreateObject("ADODB.Recordset") SQL = "SELECT * FROM reg Where ID="&ID rs.Open SQL, conn, 1, 1 %> <% if isNumeric(ID) and NOT IsEmpty(ID) then %> <table width="200" height="200" align="center"> <tr> <th BackGround="imgForum/Logo.gif"> </tr> </table> <body vlink="white" alink="white" dir="rtl" bgcolor="#F4F4F4"> <TITLE>שגיאה!</titlE> <table width="200" height="200" align="center"> <tr> <th BackGround="imgSite/Logo.gif"> </tr> </table> <link rel="stylesheet" href="StyleCSS.css" type="text/css"> <CenTer> <BR> <BR> <BR> <BR> <BR> <BR> <BR><a href="Index.asp"><font color="BLACK" size="4" face="TAHOMA"><B>פרופיל לא נימצא</B></a><BR> </CenTer> <% Else %>

ופה בא ההחזר של תנאי האמת

אבל הקוד מראה לי רק את התנאי שקר

מה עושים?

נערך לאחרונה ע"י orwb בתאריך 27-07-2008 בשעה 20:22.
חזרה לפורום
  #12  
ישן 27-07-2008, 22:46
  משתמש זכר uninstall uninstall אינו מחובר  
 
חבר מתאריך: 11.11.01
הודעות: 1,751
בתגובה להודעה מספר 11 שנכתבה על ידי orwb שמתחילה ב "לא ממש הבנתי אבל תראה מה אני..."

אני אנסה להסביר לך שוב מה הטעות שלך.
אתה כתבת את השורה הזו:
קוד:
ID=IsNumeric (Request.QueryString("id"))

בכוונה שהמשתנה ID שלך יכיל את מה שהמשתמש שלח במחרוזת get שלך (אחרי הסימן שאלה בשורת כתובות).

אבל הפונקציה IsNumeric מחזירה ערך True או False.
ולכן המשתנה ID שלך לא יכיל את המספר שהמשתמש הקליד אלא ערך אחר.
ופה נוצר כל הבלאגן שלך.

מה שאתה צריך לעשות זה דבר מאוד פשוט, קודם כל להכניס למשתנה ID את המידע של המשתמש כמו שהוא כלומר:
קוד:
ID= Request.QueryString("id")


אח"כ אתה יכול לכתוב משפט IF שיבדוק אם המשתנה ID הוא מספר באמצעות הפונקציה IsNumeric
ואם נניח התשובה היא לא אתה יכול לבחור מה לעשות (להפסיק את הרצת הקוד, לרשום הודעת שגיאה כלשהיא, להציב ערך ברירת מחדל 0 במקרה כזה, מה שבא לך).

מה שכתבתי למעלה, זה שהפונקציה הזו מתייחסת לערך ריק כאילו הוא המספר 0, ולכן אתה תרצה באותה ההזדמנות לבדוק אם הערך לא ריק ובגלל זה IsNumeric מחזיר True.
את הבדיקה הזו אפשר לעשות בכל מיני שיטות, אפשר לבדוק אם ה ID="" או להשתמש בפונקציה IsEmpty

אני מקווה שעכשיו הכל ברור.

חזרה לפורום
  #14  
ישן 28-07-2008, 13:27
  orwb orwb אינו מחובר  
 
חבר מתאריך: 10.06.08
הודעות: 26
בתגובה להודעה מספר 13 שנכתבה על ידי רמי ד שמתחילה ב "אתה מחפש פונקציה..."

זה לא מזהה את val
Script error detected at line 2.
Source line: ID=val(Request.QueryString("id"))
Description: ‏‏אי-התאמה של סוג: 'val'

ול-unistall ניסיתי לתקן אבל עוד פעם זה מראה רק את ה-id הראשון הנה הקוד:
קוד:
<% ID=Request.QueryString("id") Set conn = Server.CreateObject("ADODB.Connection") FilePath = Server.MapPath("data/db.mdb") Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & FilePath & ";" Set rs = Server.CreateObject("ADODB.Recordset") SQL = "SELECT * FROM reg Where ID="&ID rs.Open SQL, conn, 1, 1 %> <% IF ID=False OR IsEmpty(ID) then %> <table width="200" height="200" align="center"> <tr> <th BackGround="imgForum/Logo.gif"> </tr> </table> <body vlink="white" alink="white" dir="rtl" bgcolor="#F4F4F4"> <TITLE>שגיאה!</titlE> <table width="200" height="200" align="center"> <tr> <th BackGround="imgSite/Logo.gif"> </tr> </table> <link rel="stylesheet" href="StyleCSS.css" type="text/css"> <CenTer> <BR> <BR> <BR> <BR> <BR> <BR> <BR><a href="Index.asp"><font color="BLACK" size="4" face="TAHOMA"><B>פרופיל לא נימצא</B></a><BR> </CenTer> <% Else %>

נערך לאחרונה ע"י orwb בתאריך 28-07-2008 בשעה 13:52.
חזרה לפורום

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 23:43

הדף נוצר ב 0.07 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר