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

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   PHP | אימות של קוד אבטחה (https://hosts.co.il/forums/showthread.php?t=43974)

syn 20-04-07 15:58

PHP | אימות של קוד אבטחה
 
הכנתי קוד אבטחה מתמונה, אני צריך שמישהו ידריך אותי איך אני עושה אימות של הקוד,
אם המשתמש כתב את ה string נכון ב input תדפיס משהו, אם לא תדפיס משהו.

PHP קוד:

<?php
$string 
rand 11111,99999 ) ;
$string str_replace '2''F'$string ) ;
$string str_replace '6''e'$string ) ;
$string str_replace '1''X'$string ) ; 
$string str_replace '7''D'$string ) ; 
$string str_replace '4''h'$string ) ; 
echo 
"<img src='test.php?code=$string' /><br />Code: $string";
echo <<<EOF
<br /><br />enter code pl0x<br />
<form action="hi.php" method="POST">
<input type="text" name="code" size="40">
<input type="submit" value="gogogo" />
</form>
EOF;
?>


DorWD 20-04-07 16:05

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

בניה 20-04-07 16:08

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

syn 20-04-07 16:09

אבל אז הוא שם את ה string לתוך תמונה.

DorWD, אין לי מושג מה זה ה session הזה, קראתי ב php והסתבכתי :(
אתה יכול לפרט קצת יותר עם דוגמאות?

בהתחלה חשבתי לעשות -
קוד:

if($_POST['action']
אבל הבעיה שהקוד מתחלף אחרי שאני לוחץ submit ויוצא שהקוד לא נכון :/

עריכה: הבנתי איך זה פועל, בערך.
לא הבנתי מה אני אמור לעשות עם זה :(

satan 20-04-07 16:34

תנסה אולי משהו אחר
http://www.themador.org/view-page-pagenumber-84.htm

כי אם מה שהראת פה זה כל הקוד שלך אז...

גם הקישור הזה מציג קוד ומשהו יותר מאובטח ועם תוצאה הרבה יותר טובה.

syn 20-04-07 17:11

satan יש במדריך מלא שגיאות :|

אגב, אני מנסה כבר חצי שעה להבין מה לא בסדר בקוד הבא.
הוא מראה לי כל הזמן step 1, ז"א שהקוד נכון.

PHP קוד:

<?php
session_start
();

if(
$_POST['action']=="doedit"){





$code $_GET['code'];



if (
$code $_SESSION['image']) {
echo 
"step1";


} else {
echo 
"error, lol";
}




}


$string rand 11111,99999 ) ;
$string str_replace '2''F'$string ) ;
$string str_replace '6''e'$string ) ;
$string str_replace '1''X'$string ) ; 
$string str_replace '7''D'$string ) ; 
$string str_replace '4''h'$string ) ; 

$_SESSION['image'] = $string;

echo 
"<img src='test.php?code=$string' /><br />Code: $string";
echo <<<EOF
<br /><br />enter code pl0x<br />
<form action="hi.php" method="POST">
<input type="text" name="code" size="40">
<input type="submit" value="gogogo" />
<input type="hidden" name="action" value="doedit" />
</form>

EOF;

?>


Eran-s 20-04-07 17:50

רושמים == לא =.
= אחד זה השמה של התוכן.
== אופרטור השוואה

syn 20-04-07 21:40

אני כל הזמן מתבלבל ;P
אבל זה עדיין לא עובד אצלי :(

Udi 20-04-07 21:45

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

Eran-s 20-04-07 21:50

תנסה להדפיס את הערך של ה-SESSION אם הוא בכלל מעדכן אותו נכון

syn 20-04-07 21:55

כן, ה session מדפיס את הקוד.
אבל הוא מתחלף עם כל רענון של דף :|

smilie 20-04-07 21:58

תנסה שזה ישמור אותו..

syn 20-04-07 22:06

מה זאת אומרת?
כשאני שאני עושה -
PHP קוד:

$_SESSION['image'] = $string

זה לא שומר את המשתנה בסיסשן?

עריכה: אוקיי עכשיו הגעתי לזה שהקוד שהמשתמש מקליד נשמר ב session,
והוא בודק אם זה נכון והכל, וזה עובד (הייתה בעיה ב input של הקוד).

עכשיו אני צריך לחשוב איך לעשות שהוא יישמר רק עד שמקלידים אותו.

Eran-s 20-04-07 22:39

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

syn 20-04-07 22:47

ציטוט:

נכתב במקור על ידי Eran-s (פרסם 463386)
בשביל מה להתעסק בלמחוק אותו? גם ככה הוא יוחלף בתוכן אחר אם ירעננו או משהו או ימחק כשיסגרו את הדפדפן.

אם אני לא מוחק אותו אז אחרי שהמשתמש לוחץ submit הקוד מספיק להתחלף ואז זה יראה לו שגיאה.

בסוף הגעתי לקוד -
PHP קוד:

<?
session_start
();

    if(
$_POST['action']=="doedit"){
    
$kod $_POST['kod'];
        if (
$_SESSION['image'] == $kod)
            echo 
"good";
            else
            echo 
"bad";
    } else {
            
$_SESSION = array();
            
session_destroy();
    }

    if (!isset(
$_SESSION['image'])) {
        
$string rand 11111,99999 ) ;
        
$string str_replace '2''F'$string ) ;
        
$string str_replace '6''e'$string ) ;
        
$string str_replace '1''X'$string ) ; 
        
$string str_replace '7''D'$string ) ; 
        
$string str_replace '4''h'$string ) ; 
    } else {
        
$string = ($_SESSION['image']);
    }
    
    if (empty(
$_SESSION['image'])) {
        
$_SESSION['image'] = $string;
    } else {
        echo 
"";
    }

    echo 
"<img src='test.php?code=$string' /><br />Code: $string<br /><br />";
    echo 
$_SESSION['image'];
    
    echo 
'<form action="hi.php" method="POST"><br />enter code pl0x<br /><input type="text" name="kod" size="50" value=><input type="submit" value="gogogo" /><input type="hidden" name="action" value="doedit" /></form>';
?>

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

Eran-s 20-04-07 22:53

תעשה שיכנס לסשיין ערך חדש רק אם לא בוצע POST

syn 20-04-07 23:00

אבל אני עושה destroy אם לא בוצע POST,
כדי שהסטרינג ימשיך להתחלף עד שכן יבוצע POST..


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

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