gpt4 book ai didi

security - 使用 HTTP_REFERER 阻止用户访问站点内部

转载 作者:行者123 更新时间:2023-12-04 18:55:07 26 4
gpt4 key购买 nike

我可以控制 HttpServer,但不能控制 ApplicationServer 或坐在那里的 Java 应用程序,但我需要阻止直接访问这些应用程序上的某些页面。准确地说,我不希望用户自动访问向适当的 servlet 发出直接 GET/POST HTTP 请求的表单。

所以,我决定根据 HTTP_REFERER 的值来屏蔽用户。 .毕竟,如果用户在站点内部导航,它将有一个合适的 HTTP_REFERER .嗯,我就是这么想的。

我在 .htaccess 文件中实现了一个重写规则,它说:

RewriteEngine on 

# Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} !^http://mywebaddress(.cl)?/.* [NC]
RewriteRule (servlet1|servlet2)/.+\?.+ - [F]

我希望禁止访问没有浏览站点但使用查询字符串向“servlet1”或“servlet2”servlet 发出直接 GET 请求的用户。但是我的期望戛然而止,因为正则表达式 (servlet1|servlet2)/.+\?.+根本没有用。

当我把那个表情改为 (servlet1|servlet2)/.+ 时,我真的很失望它运行得非常好,以至于我的用户无论是否浏览网站都被阻止。

所以,我的问题是:如果我没有访问权限/特权/时间来修改应用程序,我该如何完成不允许“机器人”直接访问某些页面的事情?

最佳答案

我不确定我是否可以一次性解决这个问题,但我们可以根据需要来回切换。

首先,我想重复一下我认为你在说什么,并确保我说的很清楚。您想禁止对 servlet1 和 servlet2 的请求,因为该请求没有正确的引用者并且它 有查询字符串吗?我不确定我是否理解 (servlet1|servlet2)/.+\?.+ 因为看起来您需要 servlet1 和 2 下的文件。我想也许您正在将 PATH_INFO(在“?”之前)与 GET查询字符串(在“?”之后)。看起来 PATH_INFO 部分会起作用,但 GET 查询测试不会。我使用 script1.cgi 和 script2.cgi 在我的服务器上进行了快速测试,以下规则可以完成您的要求。它们显然经过了一些编辑以符合我的环境:

RewriteCond %{HTTP_REFERER} !^http://(www.)?example.(com|org) [NC]
RewriteCond %{QUERY_STRING} ^.+$
RewriteRule ^(script1|script2)\.cgi - [F]

以上捕获了所有尝试使用查询字符串提交数据的对 script1.cgi 和 script2.cgi 的错误引用请求。但是,您也可以使用 path_info 和发布数据来提交数据。我使用此表单来防止三种方法中的任何一种与不正确的引用者一起使用:
RewriteCond %{HTTP_REFERER} !^http://(www.)?example.(com|org) [NC]
RewriteCond %{QUERY_STRING} ^.+$ [OR]
RewriteCond %{REQUEST_METHOD} ^POST$ [OR]
RewriteCond %{PATH_INFO} ^.+$
RewriteRule ^(script1|script2)\.cgi - [F]

根据您尝试开始工作的示例,我认为这就是您想要的:
RewriteCond %{HTTP_REFERER} !^http://mywebaddress(.cl)?/.* [NC]
RewriteCond %{QUERY_STRING} ^.+$ [OR]
RewriteCond %{REQUEST_METHOD} ^POST$ [OR]
RewriteCond %{PATH_INFO} ^.+$
RewriteRule (servlet1|servlet2)\b - [F]

希望这至少能让你更接近你的目标。请让我们知道它是如何工作的,我对您的问题很感兴趣。

(顺便说一句,我同意引用阻止的安全性很差,但我也理解,有时relaity 会迫使不完美和部分解决方案,您似乎已经承认这一点。)

关于security - 使用 HTTP_REFERER 阻止用户访问站点内部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3486/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com