![]() |
1
2
我不确定我是否能一次解决这个问题,但我们可以根据需要来来回回。 首先,我想重复一下你说的话,确保我说的清楚。你想拒绝对servlet1的请求,servlet2是请求没有合适的引用者,它 做 有查询字符串吗?我不确定我是否理解(servlet1 servlet2)/.+\?.+因为看起来您需要servlet1和2下的文件。我想你可能正在合并路径信息(在“?”之前)使用get查询字符串(在“?”之后)。路径信息部分似乎可以工作,但get query测试将无法工作。我使用script1.cgi和script2.cgi在我的服务器上做了一个快速测试,下面的规则可以满足您的要求。很明显,它们被编辑了一点以适应我的环境:
上面捕获了所有对script1.cgi和script2.cgi的错误引用请求,这些请求试图使用查询字符串提交数据。但是,您也可以使用路径信息和发布数据来提交数据。我用这个表格来保护自己不被错误引用的三种方法中的任何一种使用:
基于您尝试工作的例子,我认为这是您想要的:
希望这至少能让你更接近你的目标。请告诉我们它是如何工作的,我对你的问题很感兴趣。 (顺便说一句,我同意引用阻塞的安全性很差,但我也理解,关系有时会迫使不完善和局部的解决方案,这似乎您已经认识到了。) |
![]() |
2
1
我没有解决方案,但我敢打赌,依赖于引用者永远不会起作用,因为用户代理可以自由地根本不发送它,或者欺骗它,让他们进来。 |
![]() |
3
1
不能通过用户的HTTP请求来区分用户和恶意脚本。但是,您可以在太短的时间内分析哪些用户请求的页面太多,并阻止他们的IP地址。 |
![]() |
4
1
作为一种验证方法,使用引用者是非常不可靠的。正如其他人提到的,它很容易被欺骗。您最好的解决方案是修改应用程序(如果可以的话) 您可以使用验证码,或者设置某种类型的cookie或会话cookie,以跟踪用户上次访问的页面(会话很难被欺骗),并跟踪页面视图历史记录,并且只允许浏览过所需页面的用户访问要阻止的页面。 这显然需要您访问相关的应用程序,但是这是最简单的方法(我认为不是完全的,但“足够好”)。 |
![]() |
5
1
javascript是另一个防止(或至少延迟)屏幕抓取的有用工具。大多数自动化的刮削工具没有JavaScript解释器,所以您可以做一些事情,比如设置隐藏字段等。 编辑:沿着 this Phil Haack article . |
![]() |
6
0
我猜你是想阻止屏幕刮擦? 老实说,这是一个很难解决的问题,并试图通过检查http-referer的值来修复,这只是一个粘贴石膏。任何人去麻烦自动化提交将是明智的足够发送正确的推荐人从他们的“自动”。 你可以尝试速率限制,但不需要修改应用程序来强制某种“是-这-人-验证”(验证码),那么你会发现这很难预防。 |
![]() |
7
0
如果您试图阻止搜索引擎机器人访问某些页面,请确保使用的是格式正确的 robots.txt 文件。 使用HTTP引用是不可靠的,因为它是 easily faked . 另一个选项是检查用户代理字符串中是否存在已知的机器人程序(这可能需要修改代码)。 |
![]() |
8
0
让事情更清楚一点:
到目前为止,最好的答案来自“Michel de Mare”:基于IP阻止用户。我昨天做的。今天我想做一些更通用的东西,因为我有很多袋鼠用户(从一个IP地址跳到另一个),因为他们使用VPN或DHCP。 |
![]() |
9
0
你可以使用一个反CSRF令牌来实现你想要的。 本文对此进行了更详细的解释: Cross-Site Request Forgeries |
![]() |
Adithya · Apache mod_重写以调用不同的URL 3 年前 |
![]() |
Coolen · 通过htaccess重定向并删除部分链接 3 年前 |
![]() |
ciromanfredi · Apache任务组执行 3 年前 |
![]() |
Rabi · php和libapache2 mod php之间的区别 3 年前 |