首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CSRF,怎么做呢?

CSRF,怎么做呢?
EN

Stack Overflow用户
提问于 2012-01-04 07:38:47
回答 2查看 1.7K关注 0票数 2

我想知道,CSRF保护的意义是什么?我的意思是,生成令牌,并将带有令牌的隐藏字段放入表单中,然后在POST完成后,控制这两个令牌。我正在测试我的网页和我所做的所有事情来绕过它-我只是复制了整个生成的表单(html源代码)并更改了表单操作属性。难道网络机器人不是在做一些类似的事情吗?或者我只是不理解一些事情?如何进行有效的CSRF保护?

附注:我使用的是Kohana (Security::token和Security::check)

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-04 15:35:04

来自Wikipedia

攻击是通过在页面中包含一个链接或脚本来实现的,该页面访问已知(或假定)用户已通过身份验证的站点。例如,一个用户Bob可能正在浏览一个聊天论坛,而另一个用户Fred发布了一条消息。假设Fred已经制作了引用Bob的银行网站上的动作(而不是图像文件)的HTML图像元素,例如,

代码语言:javascript
运行
复制
<img src="http://bank.example.com/withdraw?account=bob&amount=1000000&for=Fred">

如果Bob的银行将他的身份验证信息保存在cookie中,并且cookie尚未过期,则Bob的浏览器加载图像的尝试将提交包含cookie的提款表单,从而在未经Bob批准的情况下授权交易。

通过生成随机令牌并将其包含在表单中,您可以通过检查发布的令牌是否与生成的令牌(通常存储在用户会话中)匹配来避免此类攻击。

Kohana docs清楚地说出了一个人应该怎么做:

您可以将此标记作为隐藏字段插入到表单中:

代码语言:javascript
运行
复制
echo Form::hidden('csrf', Security::token());

,然后在使用验证时检查它:

代码语言:javascript
运行
复制
$array->rules('csrf', array(
    'not_empty'       => NULL,
    'Security::check' => NULL,
));
票数 2
EN

Stack Overflow用户

发布于 2012-11-25 09:31:52

已经有一些用于生成安全令牌并在表单上使用的内置帮助器。可以生成令牌,将其插入隐藏字段,然后使用Validator针对Security helper类进行验证。

请参阅文档:http://kohanaframework.org/3.0/guide/api/Security#token

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8720217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档