如何防止XURL作为URL字段的一部分发送

加内什(Ganesh):

目前,我正在显示特定网页上的链接,其中包含用户通过POST请求设置的URL。该网站将显示给显示该链接的第二个用户(用户2)。单击该链接后,它将返回到用户1的网页(或者就是它的预期用途)。但这是最近出现的,如果修改了URL或用户1是不正确的用户,则将URL设置为Javascript://%0Aalert(document.domain)//,单击链接时将执行脚本。

如何在Java中验证此URL,并防止用户1在POST请求到来时将其设置为URI?

Ilmari Karonen:

有(至少)两种方法可以解决此问题,可以一起使用或分别使用:

  1. 解析收到的URL,并检查其所有组成部分(方案,主机名,端口,路径,查询字符串等)是否包含您的应用通常会生成的合理值,并且您相信它们是无害的。

    尤其是刚刚检查的方案http和/或https将足以阻止在你的问题中提到的特定攻击,但你几乎可以肯定应该做更多的验证远远不止这些。

  2. 最初生成URL时,请计算它的加密消息身份验证代码(使用存储在服务器中但从未发送给客户端的密钥),并将其与URL一起发送。当您从客户端收到URL时,请确认MAC仍然匹配。

    这对于确保该值的一般技术应该由客户机到服务器中继不变,不被篡改。如果您有多个这样的值,而不仅仅是一个URL,则可以将它们全部编码为一个字符串,并在所有值上计算一个MAC。只要确保编码是确定性的,即可在验证MAC时准确地重复编码。另外,您可能希望将其他元数据(例如用户的ID和/或时间戳)组合到MAC输入中,以防止重放攻击

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将JSON作为多部分POST请求的一部分发送

将参数作为Rails中url的一部分发送

如何在 Postman 中将文件作为请求参数的一部分发送

将 access_token 作为 websocket url 查询参数的一部分发送是否安全?

如何在CURL POST命令中将JSON文件作为请求正文的一部分发送

如何在ajax jQuery中将事件数据作为表单请求的一部分发送

作为XMLHttpRequest和FormData的一部分发送多个文件

从C脚本中的文件中读取单个字符串,并将其作为url的一部分发送

使用OAuth的RESTful API,其中身份验证令牌作为HTTP请求的一部分发送

如何使用客户端作为放置请求的一部分发送的快递访问服务器端的数据

如何在将 URL 的第一部分发送到 json encode 之前在对象值中添加它

如何防止编辑localStorage的一部分

将vuex存储的一部分作为操作的负载分发是正确的吗?

在谷歌标签管理器服务器端准备一个输入表作为 API 请求正文的一部分发送

如何搜索字段的一部分?

如何重写URL的一部分?

如何仅编码URL的一部分

如何获取 URL 的一部分?

如何获取当前的一部分URL?

如何(使用 RSpec)测试在 Rails 中发送的 HTTP 请求(作为单元测试的一部分)?

如何在Web API的http发布请求中将长破折号(-)作为字符串数据的一部分发布

我正在尝试在同一部分发送三个 mysql 准备好的语句

将int作为方法的一部分发布,但获取未找到与请求URI错误匹配的HTTP资源

是否可以将向量的一部分作为向量发送给函数?

Grails发送版本作为PUT请求的一部分

发送数组作为x-www-form-urlencoded的一部分

作为AJAX成功函数的一部分,从API调用发送PHP的JSON响应

如何在斜线后获取url最后一部分作为php中的获取值

如何在余烬应用程序中将api密钥作为url的一部分传递