目录

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防范策略研究的更多相关文章

  1. csrf防范笔记

    1.验证Http的refer字段 http有一个refer字段,用以记录该http请求的来源地址 好处: 简单便捷,后台开发人员只需要设置一个拦截器 缺点: Referer 的值是由浏览器提供的,虽然 ...

  2. 从Yii2的Request看其CSRF防范策略

    用ajax请求还是用命令行CURL请求总是会得到 http400:Bad Request的错误, 而如果用Web网页方式GET访问(去除verbFilter的POST限制),是正常的,是CSRF验证的 ...

  3. HTTP Response Spliting 防范策略研究

    目录0x1:HTTP请求的格式0x2:HTTP请求的方法0x3:HTTP响应的格式0x4:HTTP响应拆分攻击0x5:防范的方法 HTTP请求的格式 客户端所提出的HTTP请求包含下列信息:(1)请求 ...

  4. 02 flask 请求钩子、异常捕获、上下文、Flask-Script 扩展、jinja2 模板引擎、csrf防范

    一 请求勾子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接: 在请求开始时,根据需求进行权限校验: 在请求结束时,指定数据的交互格式: 为了让每个 ...

  5. CSRF与XSS攻击的原理与防范

    CSRF 1.概念与原理 CSRF,跨站请求伪造,攻击方伪装用户身份发送请求从而窃取信息或者破坏系统.例如: 用户访问A网站登陆并生成了cookie,再访问B网站,如果A网站存在CSRF漏洞,此时B网 ...

  6. 【转】CSRF攻击的应对之道

    CSRF 背景与介绍CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一.其他安全隐患,比如 ...

  7. CSRF 攻击的应对之道--转

    http://www.ibm.com/developerworks/cn/web/1102_niugang_csrf/ 简介: CSRF(Cross Site Request Forgery, 跨站域 ...

  8. CSRF 攻击的应对之道

    转载自imb文库 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,该攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在 ...

  9. 前端安全之CSRF攻击

    前端安全之CSRF攻击 转载请注明出处:unclekeith: 前端安全之CSRF攻击 CSRF定义 CSRF,即(Cross-site request forgery), 中文名为跨站请求伪造.是一 ...

随机推荐

  1. 百度ueditor编辑器背景不显示问题

    网友办法:http://www.hongxuejing.com/hulianwang/ueditor_not_show_background-33.html 官方办法:http://fex-team. ...

  2. Java Thread UncaughtExceptionHandler

    有没有发生过这样的情况,你写的工作线程莫名其妙的挂了,如果不是被你刚好看到,拿只能抓瞎了,不知道啥原因了,因为异常的时候只会把stack trace打在控制台上,不会记在你想记得错误日志里,头皮都抓破 ...

  3. ios 微信细节

    1.登录后,下次登录保存其用户名. * 官方的登录实现          * 1.把用户名和密码放在沙盒 NSString *user = self.userField.text;    NSStri ...

  4. VxWorks 6.9 内核编程指导之读书笔记 -- VxWorks Small-Footprint Configuration

    什么是Small-footprint? Small-footprint常见关键配置? 如何配置Small-footprint? 什么是Small-footprint? Small-footprint配 ...

  5. 【转】 SqlServer性能检测和优化工具使用详细

    http://blog.csdn.net/dcx903170332/article/details/45917387

  6. java小经验

    从事互联网金融,常常会碰到文件处理,以前都是傻傻的解析,这次我不想这么傻了,做个小小的封装,咱也以oop的思想来完成. 文件解析处理一般分两种模式:分隔符与定长,目前工作五年也就这两种. 封装思想: ...

  7. 前端面试题和setTimeout异步

    var len=4; while(len--){ setTimeout(function(){ alert(len); },0); alert(len); } 这个题目的答案我先说出来,读者请仔细考虑 ...

  8. 暑假集训(4)第四弹 -----排列,计数(hdu1465)

    题意概括:嗯,纵使你数次帮助小A脱离困境,但上一次,小A终于还是失败了.那数年的奔波与心血,抵不过轻轻一指,便彻底 湮灭,多年的友谊终归走向末路.这一切重击把小A彻底击溃! 不为什么,你到底还是要继续 ...

  9. grep比较两个文本相同不同行

    grep -Fxf file1 file2  两个文本中的相同行 grep -Fvxf <(grep -Fxf file1 file2) file1 file2 两个文本中的不同行 grep - ...

  10. c# Aes加解密和对象序列化

    aes加解密 public class AesCryptto { private string key = "hjyf57468jhmuist"; private string i ...