什么是阻止对 HTML 表单中 action 属性中的链接的攻击?
Posted
技术标签:
【中文标题】什么是阻止对 HTML 表单中 action 属性中的链接的攻击?【英文标题】:What is stopping attacks on the link in the action attribute in HTML forms? 【发布时间】:2018-10-18 15:02:09 【问题描述】:我知道标题听起来令人困惑,所以我想知道的是:
假设我有一个用户可以在https://example.com/login
登录的页面。页面中的表单如下所示:
<form method="post" action="https://example.com/api/auth/login">
<!-- input fields here -->
<button type="submit" value="Sign in">
</form>
https://example.com/api/auth/login
的脚本检查用户指定的用户名和密码是否正确。然后它会适当地响应 JSON。
但是,您可以在action
属性中获取此链接,并通过执行重复请求来猜测用户名和密码。作为开发人员,我应该怎么做才能防止此类攻击的发生?
【问题讨论】:
【参考方案1】:你描述的攻击名称是跨站请求伪造,CSRF。
您确实应该实施 csrf 保护,您可以从多个选项中进行选择。如果您的应用程序是有状态的(存储在会话中并在页面 html 中生成的随机令牌,然后在每次发布请求时在服务器上发送和比较)或类似双重发布(在cookie 并作为请求标头并在服务器上比较两者)如果您的应用是无状态的。
它不仅会影响登录,还会影响任何暗示应用程序状态更改的操作(主要但不限于数据更改)。
另外请注意,由于同源策略,任何试图利用此策略的攻击者都不会直接知道登录(或任何其他操作)是否成功。但很多时候这并不重要,他们只是猜测。
【讨论】:
以上是关于什么是阻止对 HTML 表单中 action 属性中的链接的攻击?的主要内容,如果未能解决你的问题,请参考以下文章
对 HTML 表单的 action 属性使用空 URL 是一种好习惯吗? (动作="")
在 HTML 中表单标签的 action 属性中使用“/xxxx.form”[关闭]