<![CDATA[Latest posts for the topic "Image code verification "]]> /hvaonline/posts/list/8.html JForum - http://www.jforum.net Image code verification Image code verification (tạm gọi là ICV)
-Mục đích: chính của IVC đó là ngăn chặn các đệ trình(submission) tự động của các automated script. Nếu một form bình thường không có việc xác thực bằng ICV những kẻ phá hoại sẽ tìm cách gửi tự động các khối thông điệp khổng lồ và gây ra Flood, và để tránh mã phát sinh lưu trong view state hoặc các url. IVC được sử dụng để đảm bảo rằng image code chỉ có thể đọc được bởi 1 người cụ thể(nghe có vẻ quái lạ !) nhưng thực tế là vậy, đó là lý do tại sao những Image Code lại có nền và các ký hiệu khó đọc nhằm tránh các chương trình phân tích text từ image, Còn gọi là Captcha image validation. Captcha(Completely Automated Public Turing test to Tell Computers and Humans Apart) có thể xem them tại http://www.captcha.net/ -Các kĩ thuật: Tùy thuộc vào ngôn ngữ lập trình mà có mỗi source riêng để thực hiện ICV + PHP
Nội dung form Contact: --------------------------------------------------------------------------------------------------------------------------- Form này chứa 1 link đến mà thực chất là link đến trang php phát sinh mã ảnh. User phải điền đúng mã ảnh thì quá trình submit sẽ được thực hiện 1. <form action="mailer.php" method="post" name="form1" id="form1" style="margin:0px; font-family:Verdana, Arial, Helvetica, sans-serif;font-size:11px; width:300px;" onsubmit="MM_validateForm('from','','RisEmail','subject','','R','verif_box','','R','message','','R');return document.MM_returnValue"> 2. 3. Your e-mail:<br /> 4. <input name="from" type="text" id="from" style="padding:2px; border:1px solid #CCCCCC; width:180px; height:14px; font-family:Verdana, Arial, Helvetica, sans-serif;font-size:11px;" value="<?php echo $_GET['from'];?>"/> 5. <br /> 6. <br /> 7. 8. Subject:<br /> 9. <input name="subject" type="text" id="subject" style="padding:2px; border:1px solid #CCCCCC; width:180px; height:14px;font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;" value="<?php echo $_GET['subject'];?>"/> 10. <br /> 11. <br /> 12. 13. Type verification image:<br /> 14. <input name="verif_box" type="text" id="verif_box" style="padding:2px; border:1px solid #CCCCCC; width:180px; height:14px;font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;"/> 15. <img src="verificationimage.php?<?php echo rand(0,9999);?>" alt="verification image, type it in the box" width="50" height="24" align="absbottom" /><br /> 16. <br /> 17. 18. <!-- if the variable "wrong_code" is sent from previous page then display the error field --> 19. <?php if(isset($_GET['wrong_code'])){?> 20. <div style="border:1px solid #990000; background-color:#D70000; color:#FFFFFF; padding:4px; padding-left:6px;width:295px;">Wrong verification code</div><br /> 21. <?php ;}?> 22. 23. Message:<br /> 24. <textarea name="message" cols="6" rows="5" id="message" style="padding:2px; border:1px solid #CCCCCC; width:300px; height:100px; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px;"><?php echo $_GET['message'];?></textarea> 25. 26. <input name="Submit" type="submit" style="margin-top:10px; display:block; border:1px solid #000000; width:100px; height:20px;font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; padding-left:2px; padding-right:2px; padding-top:0px; padding-bottom:2px; line-height:14px; background-color:#EFEFEF;" value="Send Message"/> 27. </form> --------------------------------------------------------------------------------------------------------------------------- Nội dung của image verification script --------------------------------------------------------------------------------------------------------------------------- 1. <?php 2. header('Content-type: image/jpeg'); 3. 4. $width = 50; 5. $height = 24; 6. 7. $my_image = imagecreatetruecolor($width, $height); 8. 9. imagefill($my_image, 0, 0, 0xFFFFFF); 10. 11. // add noise 12. for ($c = 0; $c < 40; $c++){ 13. $x = rand(0,$width-1); 14. $y = rand(0,$height-1); 15. imagesetpixel($my_image, $x, $y, 0x000000); 16. } 17. 18. $x = rand(1,10); 19. $y = rand(1,10); 20. 21. $rand_string = rand(1000,9999); 22. imagestring($my_image, 5, $x, $y, $rand_string, 0x000000); 23. 24. setcookie('tntcon',(md5($rand_string).'a4xn')); 25. 26. imagejpeg($my_image); 27. imagedestroy($my_image); 28. ?> Mã php khi submit --------------------------------------------------------------------------------------------------------------------------- 1. <?php 2. // remember to replace you@email.com with your own email address lower in this code. 3. 4. // load the variables form address bar 5. $subject = $_REQUEST["subject"]; 6. $message = $_REQUEST["message"]; 7. $from = $_REQUEST["from"]; 8. $verif_box = $_REQUEST["verif_box"]; 9. 10. // remove the backslashes that normally appears when entering " or ' 11. $message = stripslashes($message); 12. $subject = stripslashes($subject); 13. $from = stripslashes($from); 14. 15. // check to see if verificaton code was correct 16. if(md5($verif_box).'a4xn' == $_COOKIE['tntcon']){ 17. // if verification code was correct send the message and show this page 18. mail("you@email.com", 'Online Form: '.$subject, $_SERVER['REMOTE_ADDR']."\n\n".$message, "From: $from"); 19. // delete the cookie so it cannot sent again by refreshing this page 20. setcookie('tntcon',''); 21. } else { 22. // if verification code was incorrect then return to contact page and show error 23. header("Location:".$_SERVER['HTTP_REFERER']."?subject=$subject&from=$from&message=$message&wrong_code=true"); 24. exit; 25. } 26. ?> --------------------------------------------------------------------------------------------------------------------------- Code demo http://www.thewebhelp.com/php/php_contact_form_with_image_validation/thewebhelp_contact_form_with_validation.zip + ASP.Net Xem ví dụ tại đây: http://www.codeproject.com/KB/aspnet/ImageVerifier.aspx Mọi người hãy cho ý kiến thêm để có cái nhìn toàn diện về ICV. :-/ ]]>
/hvaonline/posts/list/20565.html#122182 /hvaonline/posts/list/20565.html#122182 GMT
Re: Image code verification md5($rand_string).'a4xn'  xuống cookie tức là ở client. Như vậy client vẫn có thể Flood được.]]> /hvaonline/posts/list/20565.html#178132 /hvaonline/posts/list/20565.html#178132 GMT