【问题标题】:Is it possible to restrict web folder access for everything except application's own AJAX calls?是否可以限制除应用程序自己的 AJAX 调用之外的所有内容的 Web 文件夹访问?
【发布时间】:2013-10-28 18:25:28
【问题描述】:

请我就以下问题征求您的意见:

我想通过 Web URL 限制对 Web 文件夹的访问(我知道这可以使用 .htaccess 来完成)。但是,我担心的是我还希望 AJAX 调用可以访问此文件夹中的代码文件。

参考问题: deny direct access to a folder and file by htaccess

因此假设 .htaccess 中的任何访问允许/拒绝规则也自动适用于 AJAX 调用(因为它们基于 URL)是否正确?如果是这样,让服务器访问机制知道它是一些试图与之通信的“代码”的最佳方法是什么?

如果我可以提供任何澄清或其他详细信息,请告诉我。 非常感谢!

【问题讨论】:

    标签: ajax regex apache .htaccess mod-rewrite


    【解决方案1】:

    您可以根据HTTP_REFERER 这样做,将此代码放入您的DOCUMENT_ROOT/.htaccess 文件中::

    RewriteEngine On
    
    ## disable direct access
    RewriteCond %{HTTP_REFERER} !^$ 
    RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.com/ [NC] 
    RewriteRule ^somefolder - [F,NC]
    

    虽然我必须补充一点,基于HTTP_REFERER 的检查不是很强,很容易被欺骗。

    【讨论】:

      【解决方案2】:

      您应该实现基于会话的身份验证机制。

      1. 在您的应用程序中,用户登录。
      2. 在您的 ajax 文件中,您测试用户是否已通过身份验证,如果未通过,则返回 403 Forbidden 标头。

      您还可以使用 ajax 发送自定义标头,并在您的 ajax 文件中进行测试,或者使用 .htaccess(如果存在)进行测试。但这不如身份验证安全,因为有人可能伪造请求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-01-05
        • 1970-01-01
        • 1970-01-01
        • 2011-11-11
        • 2015-01-31
        • 1970-01-01
        • 2016-10-07
        相关资源
        最近更新 更多