【问题标题】:.htaccess Block PHP Referer File access.htaccess 阻止 PHP 引用文件访问
【发布时间】:2014-04-15 19:52:40
【问题描述】:

我的服务器上有一个 PHP 文件,我不希望没有正确引用的任何人访问它。

这是我目前有效的规则。

RewriteCond %{REQUEST_URI} .streamer\.php*
RewriteCond %{HTTP_REFERER} !.*domain.com.*
RewriteRule .* - [F]

这条规则对mod_rewrite足够友好吗?还是需要清洁或整理一下?它确实有效,但我不是 mod_rewrite 的专家,我相信可能有比我的方法更好的代码。

【问题讨论】:

  • 引荐来源网址可能被欺骗。为什么你需要这样做?可能有一种更简单(也更安全)的方式,比如会话。
  • 我知道他们可以被欺骗我并不担心我可以将会话输入到 php 文件中,但现在我更感兴趣的是整理我现有的功能代码。
  • 整理一下并使用会话。 (甚至没有必要每个人都打开引荐来源网址。)
  • 但是我试图阻止热链接,即使我添加了访客会话,我也觉得单独使用无济于事,因为需要流式传输数据的用户都是我不想要的合法访客阻止他们。

标签: .htaccess


【解决方案1】:

您可以将%{REQUEST_URI} 条件与规则本身结合起来,您可以清理referer regex:

RewriteCond %{HTTP_REFERER} !^https?://[^/]+\.domain\.com/? [NC]
RewriteRule .streamer\.php - [F]

请注意,这也会阻止空白引用,例如,如果您将链接直接复制并粘贴到浏览器的 URL 地址栏中。如果你想允许空白引用,你需要添加一个额外的条件:

RewriteCond %{HTTP_REFERER} ^$ [OR]
RewriteCond %{HTTP_REFERER} !^https?://[^/]+\.domain\.com/? [NC]
RewriteRule .streamer\.php - [F]

【讨论】:

    猜你喜欢
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 2012-11-03
    • 2018-05-02
    • 2023-04-01
    • 2011-09-26
    相关资源
    最近更新 更多