我从1个网站的表单向另一个(同一服务器中的2个不同子域)发送一些重要信息。由于接收端位于不同的子域中,我不能让它需要登录(就像我在相同的情况下那样)并且这使得我的接收端非常脆弱,因为它可以很容易地从另一个地方调用这是绕过我的形式的工作(非常糟糕)。
如何让这更安全?我可以发送某种安全令牌以及无法截获的表单(因为我假设$ _POST数组只包含一个安全令牌,它可以如果我错了,请纠正我,或者限制接收端只接受来自某个特定地点(如某个网址或IP)的数据?
这是一个重要的项目,所以我不介意过度使用它的安全性。
答案 0 :(得分:2)
我无法登录
是的,你可以。跨域的单点登录是一个很好的文档记录问题,您甚至不会处理多个域。它是even easier across subdomains。
我可以发送某种安全令牌以及我的表单
是。生成令牌。将其存储在服务器上。把它放在表格中。提交表格。
无法截获
通过SSL提交表单。
(除非你的意思是你希望存储控制浏览器的人拦截它,在这种情况下你运气不好。如果你是通过浏览器发送数据,那么你将它置于浏览器的控制之下如果您不信任它们,那么您就无法信任这些数据。)
你能告诉我一个很好的方法来限制targetForm.php只能从a.domain.com/form.php或它的ip上接收信息吗?
您正在寻找对CSRF的防御。您需要在子域中实施会话(您可以执行此操作,请参阅上面有关Cookie的说明),然后使用synchroniser token(您存储在表单和会话中,然后在{ {1}})。
答案 1 :(得分:0)
我采取一种简单的方法:
这样你仍然可以要求用户登录a.domain.com以提交表单,当一切正常时,将数据推送到b.domain.com/targetForm.php,你可以d make仅接受来自a.domain.com的请求。