CSRF学习笔记之CSRF的攻击与防御以及审计【00x3】
2024-10-08 03:16:51
Hight.php完整代码如下:
<?php if (isset($_GET['Change'])) { // Turn requests into variables
$pass_curr = $_GET['password_current'];
$pass_new = $_GET['password_new'];
$pass_conf = $_GET['password_conf']; // Sanitise current password input
$pass_curr = stripslashes( $pass_curr );
$pass_curr = mysql_real_escape_string( $pass_curr );
$pass_curr = md5( $pass_curr ); // Check that the current password is correct
$qry = "SELECT password FROM `users` WHERE user='admin' AND password='$pass_curr';";
$result = mysql_query($qry) or die('<pre>' . mysql_error() . '</pre>' ); if (($pass_new == $pass_conf) && ( $result && mysql_num_rows( $result ) == 1 )){
$pass_new = mysql_real_escape_string($pass_new);
$pass_new = md5($pass_new); $insert="UPDATE `users` SET password = '$pass_new' WHERE user = 'admin';";
$result=mysql_query($insert) or die('<pre>' . mysql_error() . '</pre>' ); $html .= "<pre> Password Changed </pre>";
mysql_close();
} else{
$html .= "<pre> Passwords did not match or current password incorrect. </pre>";
} }
?>
我们来看看这次他是如何防御CSRF漏洞的。
这次要输入原先的密码然后才可以输入新的密码。
这个属于二次验证。这个是相对现在预防csrf较为有效行之有效的预防措施。这个关卡应该是没办法绕过的。如果大家可以绕过,分享分享姿势哈。
最新文章
- Android Studio 基本使用
- RotatingDoughnut
- html语法之--使用图像映射
- java数据库连接
- Python学习笔记——基础篇【第六周】——Subprocess模块
- Spring源码解析三:IOC容器的依赖注入
- Mybatis查询时报 Bad format for Time &#39;454:54:54&#39; in column 6 异常
- 【埃氏筛】洛谷P3383埃氏筛模板
- Android自制浏览器WebView-android学习之旅(64)
- Django学习笔记之数据库-QuerySet_API
- [转帖] 数据库用优化方案 https://segmentfault.com/a/1190000006158186
- js實現
- Awk 从入门到放弃 (8) 动作总结之三
- 在项目中使用JMail发送邮件
- oracle的存储过程如何返回结果集
- cURL和file_get_contents实现模拟post请求
- [转]Getting started with SSIS - Part 10: Event Handling and Logging
- OceanBase支持索引查询啦!
- js yui
- 在页面完成读取EXCEL