在我的网站中,用户每天只能修改一次个人信息。脚本方面,我确定它们是否被允许(即检查数据库是否自上次修改以来已经过了 24 小时)以及是否显示表单。
我的问题是,如果没有表格,恶意用户能否设法提交信息?换句话说,如果没有FORM element
用户的浏览器应该提交任何数据,对吧?
我害怕的是,如果有人设法发送数据,脚本仍然会处理它并在不应该的时候更改个人信息。
在我的网站中,用户每天只能修改一次个人信息。脚本方面,我确定它们是否被允许(即检查数据库是否自上次修改以来已经过了 24 小时)以及是否显示表单。
我的问题是,如果没有表格,恶意用户能否设法提交信息?换句话说,如果没有FORM element
用户的浏览器应该提交任何数据,对吧?
我害怕的是,如果有人设法发送数据,脚本仍然会处理它并在不应该的时候更改个人信息。
当然——这将是一种重放攻击。只要您的资源端点将处理恶意 POST 请求,而不管前面的 GET 的内容如何,那么您就很容易受到攻击。
记住:永远不要相信客户。如果您在处理 POST 请求之前进行身份验证和授权检查,那么您会没事的。
是的,如果恶意用户知道接受数据的页面的 url 及其期望的相应属性,即使没有表单,他仍然可以发送数据。然后,他可以轻松地使用该信息创建一个表单并提交数据。
所以你基本上需要在服务器端验证数据。
例如有人可以使用 curl。
curl -d profile=value http://www.yoursite.com/profile
您可以使用随表单一起发送的 CSRF 令牌来防止此类攻击。有关更多背景信息,请参阅这篇文章http://shiflett.org/articles/cross-site-request-forgeries。