如果不使用cookie,CSRF会成为威胁吗?

时间:2015-10-11 19:55:20

标签: ajax security flask xmlhttprequest csrf

我的Flask应用为AJAX - 重,但不使用任何Cookie。 CSRF仍然是威胁,或者现在部署应用程序是否安全?

我已经看过这个SO question,但我的情况略有不同,因为我不必担心用户的凭据。

我尝试了AJAX来自Chrome DevTools的呼叫(使用$.ajax())到我在localhostFlask开发服务器)上运行的服务器,我得到了错误说

  

XMLHttpRequest无法加载http://localhost:5000/_ajax。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许对“chrome:// newtab”进行访问。

这是否意味着我是安全的,或者黑客是否可能绕过这个并仍然对我的服务器进行AJAX次呼叫?

1 个答案:

答案 0 :(得分:0)

CSRF不仅仅是对CORS AJAX的保护。我可以在我的网站上制作表单,并将操作设置为http://yoursite.com/account/delete。如果用户提交我的表单,而您的网站上没有CSRF,则该操作将成功。或者,如果您对GET请求有所改变(不应该这样做),我可以将其添加到我的网站:

<img src="http://yoursite.com/account/delete" />

当我的页面加载时会发生操作。

查看Flask-WTF或此代码段:http://flask.pocoo.org/snippets/3/

修改

来自你的评论:

将该页面的操作更改为POST,并通过表单而不是链接访问该页面。如果您的链接是:

<a href="{{ url_for('my_page') }}">Click Here</>

您的表格可能是(使用Flask-WTF,您需要):

<form action="{{ url_for('my_page') }}" method="POST">
    <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
    <input type="submit" value="Click Here" />
</form>