【问题标题】:Validate a domain in a query_string for rewritecond为 rewritecond 验证 query_string 中的域
【发布时间】:2012-06-27 10:51:16
【问题描述】:

我使用的网络服务器是 Apache 2.2。我正在尝试验证外部方发送的查询字符串中的域。

一个有效请求的例子: https://something.example.com/aaa/bbb/ccc?returnurl=https://test.example.com/home

无效请求示例:

  1. scheme://something.example.com/aaa/bbb/ccc?returnurl=https://something.evil.com/home
  2. scheme://something.example.com/aaa/bbb/ccc?returnurl=http://www.google.com
  3. scheme://something.example.com/aaa/bbb/ccct?returnurl=https://something.evil.com/blah?url=https://test.example.com/home

到目前为止,在我的 httpd.conf 文件中,我有:

    RewriteEngine On

    RewriteCond %{REQUEST_URI} ^/aaa/bbb/ccc$
    RewriteCond %{QUERY_STRING} !(\.|https://|http://)example\.com(\.|/)|(\.|https://|http://)exampledev\.com(\.|/) [NC]
    RewriteRule ^(.*) / [R=403,L]

上面的代码基本上是查看查询字符串,如果 example.com 和 exampledev.com 不在 query_string 中,则将用户重定向到禁止页面。

此代码仅完成部分工作,因为无效的请求号 3 将被视为包含 example.com,这可能被视为网络钓鱼攻击

不知何故,我需要验证在 query_string returnurl 中返回的域。

http:// 或 httpd:// 与 .com 或 .net 或 .org 或任何其他顶级域之间的字符串。

有人可以帮助或建议我如何验证作为 returnurl 查询字符串返回的域吗?

【问题讨论】:

    标签: apache mod-rewrite url-rewriting query-string


    【解决方案1】:

    使用以下内容:

    RewriteEngine On
    
    RewriteCond %{REQUEST_URI} ^/aaa/bbb/ccc$
    RewriteCond %{QUERY_STRING} !(returnurl|[&]returnurl)=(http|https)://([a-zA-Z0-9]+[.]example[.]com|[a-zA-Z0-9]+[.]exampledev[.]com|example[.]com|exampledev[.]com)[&]{0,1}
    RewriteRule ^(.*) / [R=403,L]
    

    【讨论】:

    • 感谢您的帮助 例如:returnurl=google.comsometingbad.com 到目前为止,我有此代码 RewriteCond %{QUERY_STRING} !(returnurl|[&]returnurl)=(http|https) ://(example1(\.com|\.com\.au)[/]|example2(‌​\.com|\.com\.au)[/]|[a-zA-Z0-9]+ [.]example1(\.com|\.com\.au)[/]|[a-zA-Z0-9]+[.]ex‌​ample2(\.com|\.com\.au)[/ ]|[a-zA-Z0-9]+[.][a-zA-Z0-9]+[.]exmaple2(\.com|\.com\.au‌​)[/])[&]{ 0,1} 这会停止“.com.au”和“.com”之后的任何字符串,但必须有 [/]。我不知道怎么说[/|]。非常感谢您的帮助
    • 这可能会完成这项工作。 (\.com$|\.com\.au$|\.com/|\.com\.au/)
    猜你喜欢
    • 2016-05-03
    • 2013-07-29
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 2015-05-21
    • 2011-05-01
    • 2020-08-05
    • 1970-01-01
    相关资源
    最近更新 更多