0

我在使用 IIS 7 在 URL Rewrite 2.0 中设置规则时遇到了一些问题。我正在开发一个结合了更现代的 .NET 4.0 内容和经典 .ASP 内容的网站。我当前的任务是尝试从用户输入中去除一些特定字符,以帮助防止 XSS 攻击。

我得到了基本语法:

<rule name="Rule Name" stopProcessing="true">
    <match url="myPage.asp" />
    <conditions>
        <add input="" pattern="" />
    </conditions>
    <action type="" />
</rule>

我知道我需要三个步骤,1) 确保我们正在查看的是帖子 2) 使用正则表达式识别许多坏字符中的任何一个 3) 继续发布帖子,去掉这些字符。

我认为第一个可以通过以下方式解决:

<add input="{REQUEST_METHOD}" matchType="Pattern" pattern="POST" ignoreCase="true" />

令我沮丧的是第二个和第三个问题。
第二个也是一个输入,但我一直在努力寻找最好的 {} 变量来放入输入。现在我有这个:

<add input="{REQUEST_URI}" pattern="[\\\|&lt;>]" />

但我知道 {REQUEST_URI} 不是去那里的正确变量。我一直在 URL 重写站点 (http://www.iis.net/download/urlrewrite),我找到了 IIS 6.0 服务器变量列表 (http://msdn.microsoft.com/en- us/library/ms524602(v=vs.90).aspx),但我似乎无法找到 7.0 及更高版本中可用的变量及其含义的良好列表。这是任何人在某处添加书签并可以传递的东西吗?

第三个也是给我的问题。现在,我已经<action type="AbortRequest" />设置了其他一些规则,但为此,我不想停止请求,我只想删除坏字符并继续 POST。IIS 中的自定义规则设置看起来很有希望,但它似乎只是想重定向到一个 URL,而不是做任何其他事情。这甚至是可能的吗?

我还应该注意,我正在研究 IIS 托管模块作为获得我正在寻找的东西的替代方案。这听起来对任何人来说都是更好的途径吗?

4

1 回答 1

0

所以,事实证明你不能这样做,而且我误解了 URL 重写应用程序的范围。我应该关注 IIS 托管模块,并将在未来转向该模块。

于 2012-04-26T13:52:14.970 回答