有哪些HTML表单攻击向量?

时间:2010-08-30 11:52:27

标签: html security forms xss csrf

我开始看看HTML表单安全性。到目前为止,我的研究揭示了三个主要的攻击载体:

  1. 跨站点请求伪造(CSRF)
  2. 跨站点脚本(XSS)
  3. SQL注入
  4. 我的问题是: HTML表单的攻击向量是否比这些更多?我对通过HTML表单发布的可能攻击列表感兴趣。

4 个答案:

答案 0 :(得分:2)

它总是取决于表格的作用。

Code injection将是另一个威胁(SQL注入属于)。

答案 1 :(得分:1)

作为用户提供的数据的注入向量,表单与URI或标题相同。一般的“不信任客户端”规则适用于SQL注入,XSS等的可能性。因此,仅依赖于JavaScript验证而没有服务器端验证的表单是不好的。

表格更具体的问题包括:

  • 假设type = hidden字段对用户不可见或不会被用户操纵
  • 未通过HTTPS提交敏感数据
  • 错误地屏蔽数据(例如,向用户显示信用卡的最后N位数字,但无论如何所有数字都在页面中的某处)
  • 对于像PHP这样可以从不同阵列访问GET和POST数据的语言,对$ _POST应用安全检查,但是从$ _GET中获取值

工作流或“业务逻辑”问题并非特定于表单,但它们更常用于通常由它们处理的功能:

  • 必须在表单B之前填写不充分的工作流程强制执行,例如表单A,但是在客户端而不是服务器端跟踪状态转换。 (用户可以跳过不应跳过的步骤。)
  • 缺乏速率限制。这取决于背景,例如点击向垃圾邮件用户或操作团队发送电子邮件的表单,反复点击“应用折扣”表单以降低价格,需要全表扫描的搜索可能会导致DoS。

答案 2 :(得分:1)

阅读owasp top 10.特别是A1-Injection。虽然应该注意CSRF / XSS / Injection缺陷也可能出现在其他地方,例如GET请求和HTTP头。

<form>还存在其他问题,例如,如果您要发布敏感信息,请不要使用HTTPS网址。也不使用登录表单的“密码”变量类型。

答案 3 :(得分:0)

不要忘记查看请求伪造。如果你没有正确验证一个动作,atackers可以这样做:

<img src="http://mysite.com/delete_post/4" style="display:none">

这会强制用户删除自己的帖子,甚至不知道它。并且因为用户自己被迫这样做,登录验证是不够的。只是迁移到帖子也不够。

要解决这个问题,另一种方法是发送带有表单的令牌(例如通过隐藏的输入),该令牌将从内部进行验证。所以atack会因为atacker不知道令牌而失败。即使他发现,他也只会影响一个用户,并且可以在一段时间后或每次登录后更改令牌。