如果不使用 cookie,CSRF 是否构成威胁?

Is CSRF a threat if not using cookies?

我的 Flask 应用 AJAX 很重,但不使用任何 cookie。 CSRF 仍然是威胁还是现在部署该应用程序是否安全?

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

我尝试从 Chrome DevTools(使用 $.ajax())向我的服务器发起 AJAX 调用,该服务器是 localhost 上的 运行(Flask开发服务器),我收到一条错误消息

XMLHttpRequest cannot load http://localhost:5000/_ajax. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'chrome://newtab' is therefore not allowed access.

这是否意味着我是安全的,或者黑客是否有可能绕过这一点并仍然对我的服务器进行 AJAX 调用?

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,并通过表单而不是 link 访问它。如果您的 link 是:

<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>