安全顾问安全检测网络架设网络优化网站维护数据备份数据恢复
年 月 日 
当前页面生成时间:
栏目导航:
注册会员
 
正在加载中...


深圳市电维科技网络服务

公司是一家从事计算机销售、无盘网络系统、VOD(网络版及单机版)点歌系统、网络系统工程解决方案的高技术专业服务公司,公司现有十多名资深电脑技术工程师及网络技术工程师,能及时为您提供技术支持,解决电脑、网络出现的各种软、硬件故障,拥有多名长期从事网络安全技术的深资工程师,为您的企业保驾护航



当前页面导航 首页 >> 网络技术 >> 网络安全 >> 正文

查看方式: 查看:[ 大字 中字 小字
什么是 CSRF攻击?
来源:本站 作者:7747.ne 发表日期:2008-10-8 17:33:42 阅读次数:
CSRF - Cross-site Request Forgery 字面意思是指跨站点请求伪造,通常用来指 WEB 网站的这一类漏洞,即在某个恶意站点的页面上,促使访问者请求你的网站的某个 URL(通常会用 POST 数据方式),从而达到改变服务器端数据的目的。这一类攻击依赖于你的网页中的表单,脆弱的表单很容易受到攻击。对于你网站中的访问者而言,可能会受到以下攻击:


产考引文资料 http://www.squarefree.com/

什么是 CSRF?

CSRF - Cross-site Request Forgery 字面意思是指跨站点请求伪造,通常用来指 WEB 网站的这一类漏洞,即在某个恶意站点的页面上,促使访问者请求你的网站的某个 URL(通常会用 POST 数据方式),从而达到改变服务器端数据的目的。这一类攻击依赖于你的网页中的表单,脆弱的表单很容易受到攻击。对于你网站中的访问者而言,可能会受到以下攻击:

* 在你的网站之外记录受攻击者的日志(比如:Slashdot);
* 修改受攻击者在你的网站的设置(比如:Google);
* 修改你的硬件防火墙;
* 使用受攻击者的登录信息在你的网站中发表评论或留言;
* 通过受攻击者的 IP 地址发表匿名留言;
* 将资金转移到另一个用户帐号中。

CSRF 攻击的典型是那些使用 cookie 记录登录信息的网站,但对于一些允许某个 IP 地址访问的页面(如内部网),这一类攻击也会奏效。

CSRF 攻击通常会使用到 JavaScript(但不仅限于 JavaScript)实现跨站点自动提交表单--表单数据可以隐藏,提交按钮可以伪装成链接或滚动条。

如何防止 CSRF 漏洞

* 确定那些接受可改变服务器数据的 CGI 只接受 POST 参数,不接受 GET 参数,一些服务器端语言默认同时接受两种方式提交过来的参数;
* 确定表单提交处理的是你自己的表单,可以使用一个隐藏字段中存放 MD5 字符串,此字符串是将登录 cookie 数据与服务器端存放的密钥进行 MD5 之后的结果,只有这个 MD5 字符串正确时才接受表单数据;
* 另外还可以增加一个更为严格的方法:在表单中增加一个时间戳的隐藏字段,并将其包含到 hash 字符串中,如果时间戳超过某个时间,则认为表单已过期。当表单过期时,给出一个方法可以让用户重新提交表单,比如将用户之前填写的数据依旧放入表单中,但使用一个新的 hash 字符串。

一个 PHP 的表单例子,表单代码:
<?php
$key = 'y8s4Z7m2'; //MD5 加密密钥
$time = time(); //当前时间
$hash = md5($time.$key); //hash 字符串
?>
<form method="post" action="comment.php">
 <p>Your name: <input type="text" name="person_name" /></p>
 <p>Comment:<br /><textarea name="comment" rows="10" cols="60"></textarea></p>
 <input type="hidden" name="time" value="<?php echo $time; ?>" />
 <input type="hidden" name="hash" value="<?php echo $hash; ?>" />
 <p><input type="submit" name="comment" value="Submit Comment" /></p>
</form>
表单提交之后的 comment.php 后台处理程序代码:

<?php
$key = 'y8s4Z7m2'; //密钥,与上面的一致
$expire = 1800; //表单过期时间:半小时
$my_hash = md5($_POST['time'].$key); //正确的 hash 字符串
if ($my_hash != $_POST['hash']) //hash 字符串不正确
 die('非法表单提交。');
if (time() - $_POST['time'] > $expire) {
 //表单已经过期,生成新的时间戳和 hash 字符串,显示表单让用户重新提交。(此处省略)
 //….
}
//表单验证通过,可以接受表单提交的数据,并进行其它操作。
//….
?>
不要以为可以通过 Referer 头信息来保护你的网站用户,使其不受 CSRF 攻击。

如何实施CSRF攻击  防范CSRF攻击原理


TAG关键字:什么是 CSRF攻击


本文章评论条数: 今日评论条数:
正在加载评论列表...
评论表单加载中...
http://www.pcwbc.com/files/ews2008-9/rssdz.gif深圳IT外包首选企业上网就上114啦!

申请链接 | 加入讨论组 | IT外包报价 | 服务质量 | 信息保密 | 关于我们 | 公司概述 |
@ 2008 pcwbc inc.www.pcwbc.com
联系电话:0755-89579120 0755-81195110 传真:0755-89579120
深圳布吉大芬信和爱琴居B栋23D Powered By:深圳市电维科技网络服务有限公司
服务器安全24小时维护电话:013715337990 签约用户QQ在线支持:86661383 86661683 86668383 303809808 115128314 154476677

不良信息举报中心

深圳市信息行业协会

网络110报警服务