我可以控制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]
Run Code Online (Sandbox Code Playgroud)
我希望禁止访问那些未导航站点但使用查询字符串向“ servlet1”或“ servlet2” servlet发出直接GET请求的用户。但是我的期望突然结束了,因为正则表达式(servlet1|servlet2)/.+\?.+根本不起作用。
当我将表达式更改为时,我真的很失望,(servlet1|servlet2)/.+并且效果如此之好,以至于无论用户是否浏览该网站,我的用户都被阻止了。
因此,我的问题是:如果我没有访问权限/时间/权限来修改应用程序,如何允许不允许“机器人”直接访问某些页面的事情呢?
我的服务包含大量请求,且HTTP_REFERER值为空。我想正确地解释这一点,并想知道最常见的原因。
我知道 HTTP_REFERER 是一个可选的标头字段,但大多数具有默认设置的浏览器似乎都会发送它们。
到目前为止我发现的常见原因:
缺少什么|无关的|错误?
是否可以在这些项目后面加上百分比?或者也许对列表进行排序并指出比例?
图片两个网页,都使用https查看.它们位于不同的域中.
我如何(合理地)确保到达我的页面的人通过位于另一个(特定)域的超链接来到?我只想允许来自该域的流量.任何关于实现这一目标的最佳方法的想法将不胜感激.
我试着查看HTTP_REFERER,但显然在这种情况下它没有被发送.我知道HTTP RFC指定不从https - > http发送引用者信息,但这是否也适用于https - > https跨域或ssl证书?
如果重要的话,我的域在ASP.NET上运行.我无法控制源域.
谢谢.
我有一个问题,我想根据来自referered url的子字符串重定向用户,如何使用htaccess实现这一点?
提前致谢,
它在我输入时有效
header("Location: http://www.google.com");
Run Code Online (Sandbox Code Playgroud)
但是当我拥有时它不起作用
header("Location: $_SERVER['HTTP_REFERER']");
Run Code Online (Sandbox Code Playgroud)
我想将页面重定向到它来自的任何页面.
PHP变量$ _SERVER ['SERVER_NAME']可以伪造或伪造吗?我计划将其用作表单发布的安全措施.我会检查以确保该变量是我的站点名称(www.example.com).我知道HTTP_REFERRER可以伪造,但我不确定这个.
谢谢!
我有这个swf文件,它会crossdomain.xml在播放前请求一个文件.并且文件主机配置为禁止"Hotlinking"(这意味着服务器将检查Referer Header,302如果referer不在列表中则返回).
在chrome中一切运行良好,但crossdomain.xml文件请求不会Referer在IE中发送Header,因此无法获取文件.
我已经在IE 11的调试工具中测试了IE 11,IE 8和IE 9,10.
我不是这个swf文件的作者,也不知道它是如何工作的.有什么解决方案吗?谢谢!
更新:我没有回答,所以我必须重新配置服务器以禁用302重写.
我最近注意到一个非常古怪的趋势,我对此感到困惑。在过去的一两个月里,我开始注意到没有引用标头的网站会崩溃。
作为背景:您当然会记得引用标头被滥用来执行从功能检测到某些误导性的安全外观等一系列事情的古老时代。仍然有一些遗留站点依赖它,但在大多数情况下,引用标头已降级为糟糕的设备检测。
想象一下,当没有一个但三个现代网站在没有推荐人的情况下突然崩溃时,我会感到惊讶。
Codepen:笔预览和整页视图刚刚中断(i.imgur.com/3abXqsC.png)。但编辑器视图完美运行。
Twitter:基本上每个交互功能都会中断。如果您尝试发推、转推、收藏等,您会收到一个通用的无描述性错误 (i.imgur.com/E6tIKFo.png)。如果您尝试更新设置,它只会直接拒绝 (403) (i.imgur.com/51e2d0M.png)。
Imgur:它只是无法上传任何内容 (i.imgur.com/xCWpkGX.png) 并最终放弃 (i.imgur.com/iO2UlR6.png)。
这三个都是现代网站。自从我开始使用 Codepen 以来,它就已经坏了,所以我不确定它是否总是这样,但 Twitter 和 Imgur过去在没有引用的情况下工作得非常好。事实上,我刚刚注意到 Imgur 坏了。
此外,它们都只生成非描述性的错误消息,如果有的话,根本无法识别问题。前两次我花了很多反复试验才弄明白,现在我尝试将引用标头作为第一件事。可是等等!还有更多!解除它们所需要的只是发送一个作为主机根目录的通用引用(即 twitter.com、codepen.io、imgur.com)。您甚至不需要使用带有目录路径的实际 URL!
一个网站,我可以把它归结为糟糕的代码。但是三个主要的现代网站——尤其是当它们过去工作时——是一个巨大的头疼。
有没有其他人注意到这种趋势或知道wtf正在发生?
我试图了解 HTTP 引用标头的行为。我注意到有时引用是完整的(完整的 URL,包括路径和查询字符串),但大多数情况下它只包含域。
例如“ https://www.google.com/ ”而不是“ https://www.google.com/search?q=http+referer+truncated&oq=http+referer+truncated&aqs=chrome..69i57.6485j0j1&sourceid= chrome&ie=UTF-8#q=http+referer+is+not+full '
关于裁判何时满员以及何时被截断是否有任何规则?
AppScan 报告坚持认为我的站点在跨站点请求伪造方面存在一些问题。
1-) 在表单上使用令牌是一个很好的解决方案,但在报告中有没有像“注销”页面这样的表单的页面。它只会终止会话,仅此而已,CSRF 如何在那里使用我不明白。
2-) 检查“Referer”是一个好的解决方案吗?每个人都说不。并且“Referer Header”并不总是存在。
3-) Same-Site Cookies 显示为最终解决方案,但我根本不使用 cookie。
需要采取什么措施来缓解 CSRF?
http-referer ×10
http ×2
php ×2
.htaccess ×1
analytics ×1
apache ×1
csrf ×1
flash ×1
http-headers ×1
https ×1
mod-rewrite ×1
redirect ×1
referer ×1
referrer ×1
security ×1
server-name ×1
url ×1