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), 中文名为跨站请求伪造.是一 ...
随机推荐
- HDOJ2030汉字统计
汉字统计 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- Xcode Product -> Archive disabled
You've changed your scheme destination to a simulator instead of "iOS Device". That's why ...
- Android之记账本
这个ColaBox记事本是我从网上下载下来的拿来学习一下的(APK下载点这里.) 从登记收入与开支的页面跳转到账单页面运用了SQL数据库的录入,整体表的结构为: db.execSQL("CR ...
- jquery 评论等级(很差,差,一般,好,很好)代码
可能标题没有说的太明白,这里先让大家看一下效果,以便让客官们了解小弟说的是什么... 看完效果后估计各位客官已经明白小弟说的是什么了吧,下面小弟就带大家看下代码 <style> .maxd ...
- C#中委托和事件的区别实例解析
这篇文章主要介绍了C#中委托和事件的区别,并分别以实例形式展示了通过委托执行方法与通过事件执行方法,以及相关的执行流程与原理分析,需要的朋友可以参考下 本文实例分析了C#中委托和事件的区别,分享给大家 ...
- 高性能CSS(四)
移除无匹配的样式 移除无匹配的样式,有两个好处: 第一,删除无用的样式后可以缩减样式文件的体积,加快资源下载速度: 第二,对于浏览器而言,所有的样式规则的都会被解析后索引起来,即使是当前页面无匹配的规 ...
- SpringInAction读书笔记--第1章Spring之旅
1.简化Java开发 Spring是一个开源框架,它的根本使命在于简化java开发.为了降低java开发的复杂性,Spring采取了以下4种关键策略: 基于POJO的轻量级和最小侵入性编程 ...
- Bootstrap学习笔记(一) 排版
Bootsrap是一款优秀的前端开发框架,我从慕课网上开始学习Bootstrap,以下我学习过程中的一些笔记及代码. 首先学习排版: 从Bootstrap网站下载Bootstrap3中文文档(V3.3 ...
- vc 编译执行bat
转载:
- nand flash相关
关于nandflash的说明,请参考其他. 现在先贴出来韦东山先生的代码,作我学习之用. @************************************************ @ Fil ...