仅允许jquery加载某些页面

时间:2010-07-22 19:24:07

标签: php jquery

很抱歉,如果已经提出此问题,我已经进行了谷歌搜索,但找不到答案。

我是jquery的新手,我想知道如何保护我的后端页面不被外部用户加载?

例如,如果我的jquery .post或.get调用“delete-post.php”,我只希望jquery能够加载该页面。我不希望John Doe的一些用户意识到他可以将自己的数据发布到delete-post.php并删除他想要的任何内容,或者调用delete-post.php?id = whatever_id_he_wants。

我希望这有道理吗?就像我说的,我是jQuery的新手,我对安全性感到疑惑。

4 个答案:

答案 0 :(得分:4)

关于您唯一能做的事情,以及您应该做的事情,是检查用户是否已登录并有权删除帖子。您可以通过检查会话变量在delete-post.php脚本上执行此操作。

这里的问题不在于jQuery或AJAX,如果这是一个普通的静态表单,用户仍然可以弄清楚如何发布到这个delete-post.php页面。

希望这有帮助。

编辑:欢迎来到SO。 :)

答案 1 :(得分:0)

来验证服务器端的输入。 Javascript无法在此保护您。在delete-post.php文件中,您应该进行多次检查,以确保您网站上的授权用户正在调用该脚本,并且您可以使用某种唯一的验证密钥来授权该操作。< / p>

答案 2 :(得分:0)

您可以检查传入的请求是否属于xhttp / ajax排序,但这只会告诉您帖子的制作方式。您至少需要设置经过身份验证的会话的基础知识,以确定用户是否具有删除帖子的权限。该权限将延续到ajax请求中。

如果您正在寻找一些非常快速和肮脏的东西,请考虑简单的http基本访问身份验证,或者如果您只是为了适度,那么硬编码的IP不会是您可能遇到的最糟糕的情况。

在任何情况下,您都无法在客户端进行任何类型的用户验证,因为它太容易被欺骗。

答案 3 :(得分:0)

你应该考虑使用安全令牌(也称为'nonce',如果你碰巧是英国人,这是一个有趣的术语选择)。

nonce旨在确保任何请求源自您预期的来源。

阅读本指南(所有内容!但与此问题特别相关的一点是关于CSRF漏洞的一点),看看这个概念的简单实现:http://php.robm.me.uk/

顺便说一句,永远不要使用GET请求做任何具有破坏性的事情。永远。基本规则。始终使用POST。事实上,有些人还认为从来没有实际从应用程序中删除任何东西,只能直接从数据库中删除任何东西 - 只需设置“已删除”检查以执行软删除。但当然,这与这个问题没有直接关系。 : - )