允许获取请求但仅在我的域中?

2024-04-18

在我的网站上,我可以使用 GET 请求触发某些操作,例如隐藏或删除评论的功能。我不是很担心,但如果有人使用 img src= url 设计攻击来删除评论或电子邮件,那会很烦人。有办法防止这种情况吗?

我使用 httponlycookies 作为登录数据。如果有人使用 img src 或变体,请求是否会提交有效的登录 cookie?我应该使用 POST 代替吗? POST 会减慢网站速度吗? cookie 非常少,因此浏览器可以使用一个数据包提交 cookie 和 POST,但我不知道 POST 和 cookie 是否必须分开。

所有这些答案似乎都需要考虑其他 3 个答案中未提及的内容。因此,我将把它变成一个 wiki,以便人们可以了解更多信息,而不是查看已接受的答案。


您在这里混淆了几个常见问题。

首先,正如其他人指出的那样,这种攻击被称为跨站点请求伪造。可能会导致来自另一个域的 GET 或 POST,因为该请求将your它将传递 cookie 的域your包含会话详细信息的域。

为了解决这个问题,当用户登录时,生成一个令牌(一些随机字符串),您网站上的所有链接和表单都会在该会话期间传回该令牌。当请求传入时,从 cookie 中获取会话详细信息,并查找应为该会话 GETted/POSTed 的令牌。如果未传递正确的令牌,则您可以忽略该请求/通知用户/日志详细信息以进行进一步调查。我建议使用最后一个,因为在实施此操作时,您很可能会错过一些无法使用的链接或表单。用户可能会直接离开,而不是花时间通知您。

其次,GET 请求应该是安全的(即仅显示数据而不进行任何更改),并且 POST 应该用于所有数据更改请求。首先,如果蜘蛛设法跟踪链接,导致蜘蛛不应该引起的变化。其次,作为用户刷新页面的备份 - 浏览器应该提醒他们将重新提交请求以及是否要继续。我说作为备份是因为您的所有请求都应该以这样的方式编写:如果重新提交,它们是无害/被忽略的,即没有请求删除最后一个项目的按钮,而是查找最后一个项目的 id为1423并且有请求删除1423的按钮;如果提交两次,那么第二次验证时应该会注意到第 1423 项不再存在,并且不会导致进一步的更改。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

允许获取请求但仅在我的域中? 的相关文章

随机推荐