我正在php网站上工作。我有一个名为pageX.php的页面,在该页面上我进行了Ajax调用:
xmlhttp.open("GET", "/getData/dat?q=" + str, true);
我想避免显示此请求中包含的数据。另外,我希望仅当它来自pageX.php时才能够响应此请求,而无其他地方。
我尝试使用PHP会话,但是没有用-如果您直接从浏览器地址栏转到
,服务器仍会响应请求mysite.com/getData/dat?q=1
您能提供解决此问题的方法吗?
答案 0 :(得分:0)
您说过尝试使用会话。我想这将是一种快速而简单的方法,而无需遵循OAuth等各种身份验证协议的路径。
使用会话意味着,如果您使用相同的浏览器作为当前的pageX.php,则 将能够从另一个选项卡访问Proxy
。
这是因为该浏览器仍会向您的主机发送会话cookie。但是,如果尝试使用新的浏览器或新的设备,则您将无法发出该请求,因为您不再具有相同的会话Cookie。
因此,唯一的风险是,其他有权访问您用户计算机的人也可以访问PageX.php及其会话。
因此,如果您认为使用PageX.php的人未在共享计算机上使用它,那么这是一个很好的折衷。
答案 1 :(得分:0)
CORS 不需要将请求发送到同一域上的资源,因为它是从同一来源发送的。这里的问题是,您有一个开放的路由,该路由接受基于该主键以敏感信息响应的参数。您需要关闭该路线。
为此,您可以使用JWT之类的东西来为用户生成承载。有点像“记住我的令牌”。当用户进行身份验证并将其存储为会话时,可以生成此消息,如下所示:
r'(<.+>[\d+:\d+])|([[^:]+:\d+(:\d+)?])|(`\d+`)'
您的封闭路线现在看起来像这样:
['001
', ':xxxxx
:banana', '[1:3]']
然后,(以JQuery为例),您可以像这样简单地请求封闭的路线:
001
这现在使用户无法使用自己的参数来伪造请求。