1

在重写规则并寻求帮助时,我有点绿色。我有做事情的要求:

  1. 使用apache做反向代理
  2. 在参数黑客攻击的情况下,从 url 中删除一些参数。

我有一个网址,例如:

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]

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

希望能帮助到你。

4

0 回答 0