目录

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. 关于蓝牙设备与ios连接后,自动打开一个app

    How to launch an iphone app when an external accessory is either paired over BT or plugged into dock ...

  2. 和阿文一起学H5——H5工具、素材

    字体: 一般的H5工具都会提供一部分字体,如果提供的字体中没有自己想用的字体,可以在PPT或PS中进行加工,然后另存为图片,再导入到H5工具中去. 字全生成器: 1.http://www.diyizi ...

  3. HOWTO: Be more productive

    ---by   Aaron Swartz HOWTO: Be more productive “With all the time you spend watching TV,” he tells m ...

  4. 第四十六篇、UICollectionView广告轮播控件

    这是利用人的视觉错觉来实现无限轮播,UICollectionView 有很好的重用机制,这只是部分核心代码,后期还要继续完善和代码重构. #import <UIKit/UIKit.h> # ...

  5. 关于C/C++中的位运算技巧

    本篇文章讲述在学习CSAPP位运算LAB时的一些心得. 移位运算的小技巧 C/C++对于移位运算具有不同的策略,对于无符号数,左右移位为逻辑移位,也就是直接移位:对于有符号数,采用算术移位的方式,即左 ...

  6. 关联 Android 源代码 到 Ecplise

    1. 下载android 源码存于本地硬盘; 2. 打开Eclpise, 新建Android Project; 3. 在MainActivity文件中,按住Ctrl 点击Activity类 4. 弹出 ...

  7. angular $q服务的用法

    Promise是一种和callback有类似功能却更强大的异步处理模式,有多种实现模式方式,比如著名的Q还有JQuery的Deffered. 什么是Promise 以前了解过Ajax的都能体会到回调的 ...

  8. ubuntu server版连接vpn服务器

    命令行的方法: 1.要下载pptp的客户端    sudo apt-get install pptp-linux 2.创建连接     sudo pptpsetup –create vpn001 –s ...

  9. 如何实现phpcms v9_4X版本tag的伪静态?

    这两个月来写的文章越来越少了,不是懒,因为太忙了--为客户赶做网站.因为客户指定要使用phpcms v9,还要求使用phpcms v9_42版本实现tag伪静态,在接手的时候phpcms v9_42是 ...

  10. 部门招聘开发人员(python相关)

    岗位职责: 1.参与需求分析,产品设计,功能开发: 2.负责系统平台的日常维护: 3.与团队技术交流,共同进步 任职要求: 1.精通Python:对Python有兴趣. 2.熟悉MVC架构,精通Dja ...