1.暴力破解(Brute Force):http://www.2cto.com/Article/201403/284282.html 2.命令注入攻击(Command Injection Execution):http://www.2cto.com/Article/201403/284294.html   CSRF就是跨站请求伪造攻击,你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,修改你的密码,甚至于购买商品,虚拟货币转账……造成的问题包括:个人隐私泄露以及财产安全。   这里以修改您的密码介绍CSRF。   一、先看看没有任何安全防御的代码。       01    02 <?php    03     04     if (isset($_GET['Change'])) {    05     06         // Turn requests into variables    07         $pass_new = $_GET['password_new'];    08         $pass_conf = $_GET['password_conf'];    09     10     11         if (($pass_new == $pass_conf)){    12             $pass_new = mysql_real_escape_string($pass_new);    13             $pass_new = md5($pass_new);    14     15             $insert="UPDATE `users` SET password = '$pass_new' WHERE user = 'admin';";    16             $result=mysql_query($insert) or die('<pre>' . mysql_error() . '</pre>' );    17     18             echo "<pre> Password Changed </pre>";            19             mysql_close();    20         }    21     22         else{            23             echo "<pre> Passwords did not match. </pre>";                24         }    25     26     }    27 ?>           这段代码直接将新密码写进 数据库,没有验证用户的旧密码,也没有对http引用进行确认,这样任何别的网站都可以用你cookies对你的帐户进行CSRF攻击。   二、下面这段代码对http引用进行确认,然后再写数据库。       01 <?php    02     03     if (isset($_GET['Change'])) {    04     05         // Checks the http referer header    06         if ( eregi ( "127.0.0.1", $_SERVER['HTTP_REFERER'] ) ){    07     08             // Turn requests into variables    09             $pass_new = $_GET['password_new'];    10             $pass_conf = $_GET['password_conf'];    11     12             if ($pass_new == $pass_conf){    13                 $pass_new = mysql_real_escape_string($pass_new);    14                 $pass_new = md5($pass_new);    15     16                 $insert="UPDATE `users` SET password = '$pass_new' WHERE user = 'admin';";    17                 $result=mysql_query($insert) or die('<pre>' . mysql_error() . '</pre>' );    18     19                 echo "<pre> Password Changed </pre>";            20                 mysql_close();    21             }    22     23             else{            24                 echo "<pre> Passwords did not match. </pre>";                25             }        26     27         }    28     29     }    30 ?>           这段代码虽然确认了http引用,但是还是看着不爽是吧。   三、下面这段代码就比较爽了。     01 <?php    02     03     if (isset($_GET['Change'])) {    04     05         // Turn requests into variables    06         $pass_curr = $_GET['password_current'];    07         $pass_new = $_GET['password_new'];    08         $pass_conf = $_GET['password_conf'];    09     10         // Sanitise current password input    11         $pass_curr = stripslashes( $pass_curr );    12         $pass_curr = mysql_real_escape_string( $pass_curr );    13         $pass_curr = md5( $pass_curr );    14     15         // Check that the current password is correct    16         $qry = "SELECT password FROM `users` WHERE user='admin' AND password='$pass_curr';";    17         $result = mysql_query($qry) or die('<pre>' . mysql_error() . '</pre>' );    18     19         if (($pass_new == $pass_conf) && ( $result && mysql_num_rows( $result ) == 1 )){    20             $pass_new = mysql_real_escape_string($pass_new);    21             $pass_new = md5($pass_new);    22     23             $insert="UPDATE `users` SET password = '$pass_new' WHERE user = 'admin';";    24             $result=mysql_query($insert) or die('<pre>' . mysql_error() . '</pre>' );    25     26             echo "<pre> Password Changed </pre>";            27             mysql_close();    28         }    29     30         else{            31             echo "<pre> Passwords did not match or current password incorrect. </pre>";                32         }    33     34     }    35 ?>      
    上一篇: web常见攻击二——命令注入攻击(Command Injectio

    下一篇: web常见攻击四 –不安全的验证码机制(Insecure
本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《web安全三——跨站请求伪造攻击(Cross Site Reque
   

还没有人抢沙发呢~