我想知道,CSRF保护的意义是什么?我的意思是,生成令牌,并将带有令牌的隐藏字段放入表单中,然后在POST完成后,控制这两个令牌。我正在测试我的网页和我所做的所有事情来绕过它-我只是复制了整个生成的表单(html源代码)并更改了表单操作属性。难道网络机器人不是在做一些类似的事情吗?或者我只是不理解一些事情?如何进行有效的CSRF保护?
附注:我使用的是Kohana (Security::token和Security::check)
谢谢!
发布于 2012-01-04 15:35:04
来自Wikipedia
攻击是通过在页面中包含一个链接或脚本来实现的,该页面访问已知(或假定)用户已通过身份验证的站点。例如,一个用户Bob可能正在浏览一个聊天论坛,而另一个用户Fred发布了一条消息。假设Fred已经制作了引用Bob的银行网站上的动作(而不是图像文件)的HTML图像元素,例如,
<img src="http://bank.example.com/withdraw?account=bob&amount=1000000&for=Fred">如果Bob的银行将他的身份验证信息保存在cookie中,并且cookie尚未过期,则Bob的浏览器加载图像的尝试将提交包含cookie的提款表单,从而在未经Bob批准的情况下授权交易。
通过生成随机令牌并将其包含在表单中,您可以通过检查发布的令牌是否与生成的令牌(通常存储在用户会话中)匹配来避免此类攻击。
Kohana docs清楚地说出了一个人应该怎么做:
您可以将此标记作为隐藏字段插入到表单中:
echo Form::hidden('csrf', Security::token());,然后在使用验证时检查它:
$array->rules('csrf', array(
'not_empty' => NULL,
'Security::check' => NULL,
));发布于 2012-11-25 09:31:52
已经有一些用于生成安全令牌并在表单上使用的内置帮助器。可以生成令牌,将其插入隐藏字段,然后使用Validator针对Security helper类进行验证。
请参阅文档:http://kohanaframework.org/3.0/guide/api/Security#token
https://stackoverflow.com/questions/8720217
复制相似问题