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

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 16-06-06, 20:18   # 1
-roee-
חבר על
 
מיני פרופיל
תאריך הצטרפות: Nov 2005
מיקום: IL
הודעות: 864

-roee- לא מחובר  

[מדריך] בניית קוד אבטחה רנדומאלי ב PHP

במדריך זה אני יסביר לכם איך ליצור ב GD קוד אבטחה ולאחר מכן לבדוק אם המשתמש הקליד את הקוד נכון...

אנחנו לצורך העניין נשתמש בקובץ PHP שמתחיל ככה:
PHP קוד:
    switch($_GET["act"]) {

         case 
"image":
         
image();
         break;

         case 
"doimage":
         
doimage();
         break;

         default:
         
indeximage();
         break;
    } 
מטרת החלק הזה היא לבדוק איזה ערך יש ב GET שהוא ACT ולפי כך למיין את הקוד לפונקציות..

הפונקציה image();
בפונקציה זו אנחנו ניצור את התמונה שעליה יודפס קוד בעל 5 ספרות ואותיות רנדומליות לחלוטין..
על מנת לגשת אל התמונה עלינו לרשום <img src='?act=image'>

PHP קוד:
    function image() {
        
header ("Content-type: image/png");
        
$string substr(md5(time()) 0,5); // הקוד שיוצג הוא בעצם ה 5 אותיות או ספרות הראשונות בהצפנה MD5 של הזמן העכשיווי time()..
        
$font  4;
        
$width  50;
        
$height 20;
        
$im = @imagecreate ($width,$height);
        
$background_color imagecolorallocate ($im255255255); //רקע לבן
        
$text_color imagecolorallocate($im25500);
        
imagestring ($im$font00,$string$text_color);
        
imagepng ($im);
    } 
הפונקציה indeximage();
זוהי הפונקציה של ברירת המחדל.. כל מי שייכנס אל הדף שלנו רואה את פונקציה זו...
PHP קוד:
    function indeximage() {
        
$string substr(md5(time()), 0,5); // בדיוק אותו הערך שיש על התמונה
        
echo "
        <form method=\"POST\" action=\"?act=doimage\">
          <img src=\"image.php?act=image\"><br>
          <input type=\"hidden\" name=\"real\" value=\"$string\">
          <font face=arial>Enter the code below:</font> <input type=\"text\" name=\"input\" size=\"20\"><br>
          <input type=\"submit\" value=\"&ugrave;&igrave;&ccedil;\" name=\"submit\">
        </form>
        "
;
    } 
הפונקציה doimage();
בפונקציה זו אנחנו מקבלים 2 משתני POST. האחד הקוד הנכון אשר היה HIDDEN בטופס והשני הוא מה שהמשתמש הקליד..

PHP קוד:
    function doimage() {
        
$real $_POST["real"];
        
$input $_POST["input"];

        if(
$real != $input) { // אם המשתמש הקליד קוד שגוי
            
die("<font face=arial color=red>Incorrect</font>");
            return 
false;
        } else { 
// אם המשתמש הקליד קוד נכון
            
die("<font face=arial color=green>correct</font>");
            return 
true;
        }

    } 

הסוף!

מקווה שהבנתם משהו מהמדריך..
תהנו ותלמדו
  Reply With Quote
ישן 16-06-06, 20:22   # 2
Morishani
חבר בקהילה
 
Morishani's Avatar
 
מיני פרופיל
תאריך הצטרפות: Jan 2006
הודעות: 124
שלח הודעה באמצעות MSN אל Morishani

Morishani לא מחובר  

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

מה שאתה צריך זה להכניס את ה"קוד" לתוך הsession (סישן שמור בשרת) ככה שללקוח לא יהיה אותו בכלל ואז כדי לבדוק להוציא מהסישן את ה"קוד" הזה ולאמת
__________________
A Proud member of the skrap team
  Reply With Quote
ישן 16-06-06, 20:23   # 3
Butbul
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 308
שלח הודעה באמצעות MSN אל Butbul

Butbul לא מחובר  

Freddy nice 2 meet
__________________
  Reply With Quote
ישן 16-06-06, 20:31   # 4
-roee-
חבר על
 
מיני פרופיל
תאריך הצטרפות: Nov 2005
מיקום: IL
הודעות: 864

-roee- לא מחובר  

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

מה שאתה צריך זה להכניס את ה"קוד" לתוך הsession (סישן שמור בשרת) ככה שללקוח לא יהיה אותו בכלל ואז כדי לבדוק להוציא מהסישן את ה"קוד" הזה ולאמת
עוד לא קרה שום מקרה של דיליי שידוע לי..
וגם עוד לא ידוע לי על שום בוט שיודע להכנס לקוד מקור ולבדוק את התיבות המוסתרות..
  Reply With Quote
ישן 16-06-06, 20:35   # 5
Morishani
חבר בקהילה
 
Morishani's Avatar
 
מיני פרופיל
תאריך הצטרפות: Jan 2006
הודעות: 124
שלח הודעה באמצעות MSN אל Morishani

Morishani לא מחובר  

ציטוט:
נכתב במקור על ידי bigsmoke
עוד לא קרה שום מקרה של דיליי שידוע לי..
וגם עוד לא ידוע לי על שום בוט שיודע להכנס לקוד מקור ולבדוק את התיבות המוסתרות..
אוקיי בקשר לדיליי אם לא קרה אז אחלה - זה זניח.
אבל להכנס לקוד מקור ולבדוק את התיבות המוסתרות - זה פרצת אבטחה, לא עשית כלום עם התמונה הזאת, זה כאילו עשית אותה ליופי.
__________________
A Proud member of the skrap team
  Reply With Quote
ישן 16-06-06, 20:37   # 6
eXtaZa
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Dec 2005
הודעות: 288

eXtaZa לא מחובר  

אולי תביא לנו דוגמא לתוצאה של זה?
  Reply With Quote
ישן 16-06-06, 20:46   # 7
-roee-
חבר על
 
מיני פרופיל
תאריך הצטרפות: Nov 2005
מיקום: IL
הודעות: 864

-roee- לא מחובר  

ציטוט:
נכתב במקור על ידי Morishani
אוקיי בקשר לדיליי אם לא קרה אז אחלה - זה זניח.
אבל להכנס לקוד מקור ולבדוק את התיבות המוסתרות - זה פרצת אבטחה, לא עשית כלום עם התמונה הזאת, זה כאילו עשית אותה ליופי.
סבבה אז אפשר לעשות שהתיבות המוסתרות יהייו מוצפנות ב base64_encode ואז בפונקציה שבודקת את ה FORM לעשות base64_decode
  Reply With Quote
ישן 16-06-06, 21:07   # 8
-VladK-
הוסטסניון
 
-VladK-'s Avatar
 
מיני פרופיל
תאריך הצטרפות: Apr 2006
גיל: 33
הודעות: 2,182

-VladK- לא מחובר  

נחמד אבל עדיף שתכניס את זה לתוך סשן...ככה ללקוח לא תהיה גישה לשינוי....נחמד סך הכל (שלי יותר טוב )
  Reply With Quote
ישן 16-06-06, 22:33   # 9
meshuga
הנהלת הפורום לשעבר
 
meshuga's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 7,601

meshuga לא מחובר  

ציטוט:
נכתב במקור על ידי bigsmoke
עוד לא קרה שום מקרה של דיליי שידוע לי..
וגם עוד לא ידוע לי על שום בוט שיודע להכנס לקוד מקור ולבדוק את התיבות המוסתרות..
בלי להעליב, ובאמת.....אל תכתוב מדריך אם אתה לא יודע.....
זה הקוד שלך:
PHP קוד:
        <form method="POST\" action=\"?act=doimage\"> 
          <img src=\"image.php?act=image\"><br> 
          <input type=\"hidden\" name=\"real\" value=\"$string\"> 
          <font face=arial>Enter the code below:</font> <input type=\"text\" name=\"input\" size=\"20\"><br> 
          <input type=\"submit\" value=\"&ugrave;&igrave;&ccedil;\" name=\"submit\"> 
        </form> 
ואם אני יעשה ככה
:
PHP קוד:
        <form method="POST\" action=\"?act=doimage\"> 
          <img src=\"image.php?act=image\"><br> 
          <input type=\"hidden\" name=\"real\" value=\"asd\"> 
          <font face=arial>Enter the code below:</font> <input type=\"text\" name=\"input\" value=\"asd\" size=\"20\"><br> 
          <input type=\"submit\" value=\"&ugrave;&igrave;&ccedil;\" name=\"submit\"> 
        </form> 
(שים לב לשינויים)...
עכשיו...אני ישים בשאר התיבות מה שבא לי...וישלח לטופס בלי בעיות אימות בלי כלום, אפשר להכין בJS שזה ישלח כל שניה את הטופס...ואז יהיה 3600 הרשמות (לדוגמא) בשעה, ולשאלתך, כן בלי בעיה רואים קוד מקור של דף....וגם לא בעיה לבנות בוט על זה.


כמו שאמרו פה, אתה המידע מכניסים לסשן, דבר שנשמר על השרת ולא על מחשב הלקוח לא גלוי ולא ניתן לשינוי.
  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. הזמן כעת הוא 21:39.

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