繁体   English   中英

验证FORM POST的来源以确保它来自同一服务器/应用程序

[英]Validate Origin of FORM POST to ensure it came from same server/app

我想找到一个平台/语言无关的解决方案,以确保FORM POST的来源来自预期的来源。 即Page1.aspx在同一网站内发布到Page2.php。

具体来说,我在这里尝试做的是防止请求伪造。

在表单中使用隐藏字段,其中包含应用生成的令牌。 将令牌存储在用户会话中。 提交表单后,您的应用程序将检查隐藏字段的值是否与存储在用户会话中的值相同。

如果它是相同的,那么您知道提交的表单来自预期的来源。

旧线程,但可能仍然有用。

如果您没有设置会话信息(最佳选项),那么您可以包含一个带有加密时间戳的隐藏字段,然后将其(在解密后)与流程端的当前时间进行比较,以确保它相对接近,从而最近你认为必要的。

您可以在表单中包含一个隐藏字段,即SHA1Hash(“some-secret”+ Remote_IP + PerSessionSecret)。

PerSessionSecret是您在会话开始时自动生成的内容。 “some-secret”是一个全局秘密值 - 如果随机生成的PerSessionSecret结果不够随机,这将有所帮助。

然后在表单提交时进行相同的计算,您知道它最有可能是从发送到的同一客户端提交的。 (当然,如果您在单个地址后面有多个客户端,例如代理或NAT,则无法可靠地区分它们)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM