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

הוסטס - פורום אחסון האתרים הגדול בישראל (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=24159)

-roee- 16-06-06 20:18

[מדריך] בניית קוד אבטחה רנדומאלי ב 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;
        }

    } 


הסוף!

מקווה שהבנתם משהו מהמדריך..
תהנו ותלמדו

Morishani 16-06-06 20:22

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

מה שאתה צריך זה להכניס את ה"קוד" לתוך הsession (סישן שמור בשרת) ככה שללקוח לא יהיה אותו בכלל ואז כדי לבדוק להוציא מהסישן את ה"קוד" הזה ולאמת

Butbul 16-06-06 20:23

Freddy nice 2 meet :D

-roee- 16-06-06 20:31

ציטוט:

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

מה שאתה צריך זה להכניס את ה"קוד" לתוך הsession (סישן שמור בשרת) ככה שללקוח לא יהיה אותו בכלל ואז כדי לבדוק להוציא מהסישן את ה"קוד" הזה ולאמת

עוד לא קרה שום מקרה של דיליי שידוע לי..
וגם עוד לא ידוע לי על שום בוט שיודע להכנס לקוד מקור ולבדוק את התיבות המוסתרות..

Morishani 16-06-06 20:35

ציטוט:

נכתב במקור על ידי bigsmoke
עוד לא קרה שום מקרה של דיליי שידוע לי..
וגם עוד לא ידוע לי על שום בוט שיודע להכנס לקוד מקור ולבדוק את התיבות המוסתרות..

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

eXtaZa 16-06-06 20:37

אולי תביא לנו דוגמא לתוצאה של זה?

-roee- 16-06-06 20:46

ציטוט:

נכתב במקור על ידי Morishani
אוקיי בקשר לדיליי אם לא קרה אז אחלה - זה זניח.
אבל להכנס לקוד מקור ולבדוק את התיבות המוסתרות - זה פרצת אבטחה, לא עשית כלום עם התמונה הזאת, זה כאילו עשית אותה ליופי.

סבבה אז אפשר לעשות שהתיבות המוסתרות יהייו מוצפנות ב base64_encode ואז בפונקציה שבודקת את ה FORM לעשות base64_decode

-VladK- 16-06-06 21:07

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

meshuga 16-06-06 22:33

ציטוט:

נכתב במקור על ידי 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 הרשמות (לדוגמא) בשעה, ולשאלתך, כן בלי בעיה רואים קוד מקור של דף....וגם לא בעיה לבנות בוט על זה.


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


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

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