众所周知,在aspx页面中实现不验证文本框危险值得做法是在该aspx页面的头部加上“validateRequest=false”或是在web.config配置文件中的加上 。这确实能解决问题。
但是还有一种情况,就是在客户端通过ajax提交到服务端的ashx页面来处理数据,要是提交的数据中包含之类的数据,同样会报错,比如在一个网站配置信息的后台中配置统计代码,或广告代码,其中必定会包含javascrip标签。那么我们该如何来解决这个问题呢?我试过在配置文件中加上 但是不起作用,当然第一种解决方法也就根本没法实现。
我想过,或许在ashx页面也会有一个类似于validateRequest=false的函数,但是最终还是没找到,如果哪位读者朋友找到了,可以告诉我。
在这里,我要说的是另外一种方法,这种方法不是实现validateRequest=false这个功能,而是绕过这个验证,那么怎么绕过呢,其实很简单。首先在客户端,把”<"和“>”用其他字符(通常是不常见的中文字符,比如‘礸’)替换掉,然后在服务端ashx页面用context.request函数获得传过来的经过替换的字符串都,再用相反的方法给替换回来,也就是把复杂字符替换回“<”和“>”,最后存入数据库,当然从服务端读取数据到客户端的时候不会出现这个问题。 |