目录

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. Android Studio ndk-Jni开发详细

    http://www.open-open.com/lib/view/open1451917048573.html Java Native Interface (JNI)标准是java平台的一部分,它允 ...

  2. Setup Project 安装项目

    从vs2012起,微软已经不支持setup project了.以此纪念一下setup project.   在新建Setup Project   增加安装内容,通常是直接Oupput一个项目,或者直接 ...

  3. JavaScript学习笔记(11)——HTML DOM Event对象

    w3cshool:时间参考手册:http://www.w3school.com.cn/jsref/dom_obj_event.asp

  4. C#--格式化数值数据

    如果数值数据需要更精细的格式化,每一个占位符都可以包含不同的格式字符,下表展示了核心格式化选项.   下面用一个例子来说明. namespace LearningCSharp { class Prog ...

  5. HTML标签语义化

    标签语义化 Web语义化是指使用语义恰当的标签,使页面有良好的结构,页面元素有含义,能够让人和搜索引擎都容易理解. 如果可以在合适的位置使用恰当的标签,那么写出来的页面语义明确,结构清晰,搜索引擎也可 ...

  6. [转]C#发送Email邮件 (实例:QQ邮箱和Gmail邮箱)

    下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需要引用:using System.Net.Mail;using System.Text;using System.Net; 程序 ...

  7. xamarin.ios 豆瓣电台视频教程

    视频中提到的网址: http://www.sufeinet.com/thread-655-1-1.html https://github.com/akfish/fm-terminal/blob/dev ...

  8. android eclipse集成环境

    Android开发工具(ADT)是一个插件为Eclipse IDE,它的目的是给你一个强大的,集成的环境来构建Android应用程序. ADT扩展了Eclipse的功能使用Android SDK工具, ...

  9. 图片延迟加载库Layzr

    <!DOCTYPE html> <html> <head> <title>Layzr Demo</title> <script src ...

  10. [SQL Server]树形结构的创建

    对于SQL Server来说,构建显示一个树形结构不是一件容易的事情,逻辑构造能力不是它的强项.不过也不是说它没有能力干这个事情,只要换一种思维方式就可以理解它的工作原理. 例如,现在有一张表的内容如 ...