我有一个ajax.php文件,我的所有ajax调用都指向了当前调用要求执行的脚本的额外参数。我的问题是我想将某些脚本限制为仅由特定页面执行,例如sendComment.php
只应从www.mysite.com/user/{any user}
调用。
我所做的是将此代码放在我想限制的每个脚本之上:
if(strstr($_SERVER['HTTP_REFERRER'],'mysite.com/{page_allowed_to_exec_script}'){
Then do stuff here
}
但我注意到的是,并非所有浏览器都支持HTTP_REFERRER(我可能拼写错误,我是通过内存编写的),而且不是跨浏览器,这也是一个痛苦屁股必须在所有文件中对这些内容进行硬编码,并且在更改内容时会更加痛苦。我正在寻找一种方法,我可以在所有页面的数组中包含所有脚本能够执行它们,并在开始时检查ajax.php文件。
有谁知道如何实现这一目标?
答案 0 :(得分:1)
即使所有浏览器都可能不会发送“referer”,因为某种“代理”,“防火墙”或“安全”套件会将其删除甚至更改它。所以你可以相信它。
如果您控制引荐页面,您可以使用会话,cookie或URL来传递信息,如果您觉得它至关重要。如果它绝对至关重要,那么你唯一的选择就是会议。其他两个很容易被删除。