CSRF防范策略研究
目录
0x1:检查网页的来源
0x2:检查内置的隐藏变量
0x3:用POST不用GET
检查网页的来源应该怎么做呢?首先我们应该检查$_SERVER[“HTTP_REFERER”]的值与来源网页的网址是否一致,就可以判断是否遭受到CSRF攻击
例如:
form.html
<html>
<head>
<title>提交参数</title>
</head>
<body onload=”document.form1.submit();”>
<form action=http://localhost/show.php method=”post” name=”form1” id=”form1”>
<input type=”hidden” name=”id” id=”id” value=”4” />
<input type=”hidden” name=”delete” value=”1” />
</form>
</body>
</html>
show.php
<?php
//检查来源文件,来源文件必须是本域
$source_page=”http://localhost/show.php”;
//检查文件来源是否正确
If(strncmp($_SERVER[“HTTP_REFERER”], $source_page, strlen($source_page))) //大于或者小于IF都为真
{
//清除$_POST变量
unset($_POST);
}
Else
{
If(isset($_POST[“delete”])) //如果选中删除按钮
{
//执行文章删除代码
}
}
?>
检查内置的隐藏域变量又该怎么做呢?
例如:
Form.html:
<html>
<head>
<title>参数提交</title>
</head>
<body onload=”document.form1.submit();”>
<form action=”http://localhost/show.php” method=”post” name=”form1” id=”form1”>
<input type=”hidden” name=”id” id=”id” value=”4” />
<input type=”hidden” name=”delete” value=”1” />
</form>
</body>
</html>
show.php:
<?php
//打开Session
session_start();
if(!isset($_SESSION[“token”])) //如果没用产生token
{
//产生独特的ID,并且使用MD5来编码
$token=md5(uniqid(rand(),true));
//创建Session变量
$_SESSION[“token”]=$token;
//检查是否相等
If($_SESSION(“token”)!=$_POST[“token”])
{
//清除POST变量
unset($_POST);
}
}
?>
<html>
<head>
<title>参数&token提交</title>
</head>
<body>
<form action=”http://localhost/show.php” method=”post”>
<input type=”submit” name=”delete” id=”delete” value=”删除” />
<input type=”hidden” name=”id” value=”<?php echo $_GET[“id”]?>” />
<input type=”hidden” name=”token” value=”<?php echo $_SESSION[“token”];?>” />
</form>
</body>
</html>
使用POST不使用GET:
一般情况,在传递表单字段时一定要使用POS方法,而不要使用GET方法,处理变量时也不要使用$_REQUEST数组。虽然使用POST方法不一定能够保证绝对不会受到CSRF攻击,但是黑客要破解起来也比较困难。
CSRF防范策略研究的更多相关文章
- csrf防范笔记
1.验证Http的refer字段 http有一个refer字段,用以记录该http请求的来源地址 好处: 简单便捷,后台开发人员只需要设置一个拦截器 缺点: Referer 的值是由浏览器提供的,虽然 ...
- 从Yii2的Request看其CSRF防范策略
用ajax请求还是用命令行CURL请求总是会得到 http400:Bad Request的错误, 而如果用Web网页方式GET访问(去除verbFilter的POST限制),是正常的,是CSRF验证的 ...
- HTTP Response Spliting 防范策略研究
目录0x1:HTTP请求的格式0x2:HTTP请求的方法0x3:HTTP响应的格式0x4:HTTP响应拆分攻击0x5:防范的方法 HTTP请求的格式 客户端所提出的HTTP请求包含下列信息:(1)请求 ...
- 02 flask 请求钩子、异常捕获、上下文、Flask-Script 扩展、jinja2 模板引擎、csrf防范
一 请求勾子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接: 在请求开始时,根据需求进行权限校验: 在请求结束时,指定数据的交互格式: 为了让每个 ...
- CSRF与XSS攻击的原理与防范
CSRF 1.概念与原理 CSRF,跨站请求伪造,攻击方伪装用户身份发送请求从而窃取信息或者破坏系统.例如: 用户访问A网站登陆并生成了cookie,再访问B网站,如果A网站存在CSRF漏洞,此时B网 ...
- 【转】CSRF攻击的应对之道
CSRF 背景与介绍CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一.其他安全隐患,比如 ...
- CSRF 攻击的应对之道--转
http://www.ibm.com/developerworks/cn/web/1102_niugang_csrf/ 简介: CSRF(Cross Site Request Forgery, 跨站域 ...
- CSRF 攻击的应对之道
转载自imb文库 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,该攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在 ...
- 前端安全之CSRF攻击
前端安全之CSRF攻击 转载请注明出处:unclekeith: 前端安全之CSRF攻击 CSRF定义 CSRF,即(Cross-site request forgery), 中文名为跨站请求伪造.是一 ...
随机推荐
- HDOJ2026首字母变大写
首字母变大写 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- android中Json数据保存方式
package com.example.savejsonproject; import java.io.File; import java.io.FileNotFoundException; impo ...
- SQL Server的三种物理连接之Loop Join(一)
Sql Server有三种物理连接Loop Join,Merge Join,Hash Join, 当表之间连接的时候会选择其中之一,不同的连接产生的性能不同,理解这三种物理连接对性能调优有很大帮助. ...
- Error This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. T
错误提示: Severity Code Description Project File Line Suppression StateError This project references NuG ...
- mvc Web api 如何在控制器中调用
关于如何调用 mvc Web api 的方法,网上一搜就是一大把,基本都是在前台jq中调用的,但是如何在后台调用呢? 本楼主做了一下测试,仅供参考. 先写一个简单的api,如下:[域1] namesp ...
- Office升级到2013版后无法登录微软账号问题
自打office从2010版升级到2013版,就再也无法登录微软账号了.每次点击登录,弹出来的框就显示:this feature has been disabled by your administr ...
- JS的IE和FF兼容性问题汇总
转自:蓝色理想 以下以 IE 代替 Internet Explorer,以 MF 代替 Mozilla FF 一.函数和方法差异 1. getYear()方法 [分析说明]先看一下以下代码: var ...
- Winform ComboBox控件高亮显示
//重绘下拉表单窗口,需要在窗口设计代码中加入下面这一句 this.cmdChannelName.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawF ...
- 安装完MySQL后必须要调整的10项配置
2014年02月10日11:11 来源:开源中国 作者:BoydWang, 美好的2014, DrZ 编辑:徐志远 标签: 配置 , mysql , 数据库 [IT168 评论]当我们被人雇来监测My ...
- laravel--belongsTo关联
1.第一个是要引入的模型类 格式这样 belongsTo 第二个参数是拿自己这个模型表的 哪个字段 去匹配 要关联的qualified表里的哪个ID 默认是拿qualified_id去匹配,前面的是对 ...