test page from Skydrive
在使用.NET Ajax控件的时候,有时候我们会在HTML页面的source里发现SciptManager会产生如下的请求:
这个时候如果在IIS6/7里面设置了Request Filtering,拒绝带双横线--的请求,就会导致此Ajax功能异常。
之所以要对double-hyphen设置这样的deny规则,是因为在SQL注入里,双横线可以用来注释SQL语句的条件判断,这样导致非法的SQL语句可以执行。
为了解决这个问题,可以针对带特定的extension后缀的页面设置该规则,而对.axd不设置该规则。在IIS7.5里,可以视作已经集成了用在IIS6上的URLScan的Rule功能,所以可是实现这一要求。方法是:
1. 启动IIS管理器找到Request Filtering页面,找到Rules页。添加规则。
2. 进行如下设置:
这样就可以设置IIS只过滤.aspx页面的,在query string里带--字符串的请求。这样对.axd就不会进行过滤。