加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 湛江站长网 (https://www.0759zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

浅谈PHP安全规范

发布时间:2018-10-08 09:01:21 所属栏目:业界 来源:littlepotato
导读:副标题#e# 【新品产上线啦】51CTO播客,随时随地,碎片化学习 一、前言 php因天生支持web应用的开发,以其简单易学,开发效率高而备受喜爱。使其占据了大片的市

在这个级别的CSRF漏洞中,服务端多了一句eregi( $_SERVER[ 'SERVER_NAME' ], $_SERVER[ 'HTTP_REFERER' ]校验,ereg()函数是模式匹配,通过超全局数组获取了请求头referer值(也就是访问者向host发起请求时所在的页面)和host值,并且检查host的值是否在referer中出现。根据权威

(https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name),这两个值无法以编程的方式修改,抓包除外,因为在csrf中无法通过抓取客户端的包进行修改,所以按理来说是安全的。实则不然,通过公网服务器,诱使victim访问名字包含host的html文件就可以实现绕过。

(3) High level

  1. <?php  
  2.  
  3. if( isset( $_GET[ 'Change' ] ) ) {  
  4.     // Check Anti-CSRF token  
  5.     checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );  
  6.  
  7.     // Get input  
  8.     $pass_new  = $_GET[ 'password_new' ];  
  9.     $pass_conf = $_GET[ 'password_conf' ];  
  10.  
  11.     // Do the passwords match?  
  12.     if( $pass_new == $pass_conf ) {  
  13.         // They do!  
  14.         $pass_new = mysql_real_escape_string( $pass_new );  
  15.         $pass_new = md5( $pass_new );  
  16.  
  17.         // Update the database  
  18.         $insert = "UPDATE `users` SET password = '$pass_new' WHERE user = '" . dvwaCurrentUser() . "';";  
  19.         $result = mysql_query( $insert ) or die( '<pre>' . mysql_error() . '</pre>' );  
  20.  
  21.         // Feedback for the user  
  22.         echo "<pre>Password Changed.</pre>";  
  23.     }  
  24.     else {  
  25.         // Issue with passwords matching  
  26.         echo "<pre>Passwords did not match.</pre>";  
  27.     }  
  28.  
  29.     mysql_close();  
  30. }  
  31.  
  32. // Generate Anti-CSRF token  
  33. generateSessionToken();  
  34.  
  35. ?> 

(编辑:PHP编程网 - 湛江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!