Apache重写规则删除具有代理反向的参数

时间:2013-01-09 11:56:37

标签: apache rewrite

在重写规则和寻求帮助方面,我有点绿。我有要求做的事情:

  1. 使用apache作为反向代理
  2. 如果出现参数黑客攻击,请从网址中删除一些参数。
  3. 我有一个网址,例如:

    http://server.com/search?param1=xxxx&param2=yyyy&param3===zzzz

    http://server.com/search?param2=xxxx&param1=yyyy&param3===zzzz

    你明白了,参数可以是任何顺序。

    我希望我的终点服务器只能获得param2 = CONST。所以我正在剥离param2并添加我自己的。

    为了使事情进一步复杂化,这可能不在.htaccess但在httpd.conf(重写规则的细微差别)。

    这是我目前所拥有的(不正确匹配)。

    Options +FollowSymLinks
    ProxyPreserveHost On
    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^(.+&)?param2=(.*)&(.*)?$ [NC]
    RewriteRule ^/search$ http://%{HTTP_HOST}/search?%1%2&%3&param2=XXXXXX [R=301,L]
    
    
    ProxyPass /search http://localhost:8080/search
    ProxyPassReverse /search http://localhost:8080/search
    

    更新


    我使用了以下内容:

    RewriteCond %{QUERY_STRING} !site=MY_CONST
    RewriteCond %{QUERY_STRING} (.*)(^site=[a-zA-Z0-9]+&?|^&site=[a-zA-Z0-9]+&|&site=[a-zA-Z0-9]+)(&?.*) [NC]
    RewriteRule ^/search$ http://%{HTTP_HOST}/search?%1%3&site=MY_CONST [L,R=301,NS]
    

    第一个条件让你摆脱了将规则重写为同一资源的无限递归(因此它可以被代理)。

    希望它有所帮助。

0 个答案:

没有答案