防止script注入的解决方案
经常看到网站被javascript注入,也就是在源码的最上面或最下面多了个<script></script>,最常见的就是在右下角位置有个弹出窗口qq签名啊什么的。
我的问题是就这种中毒表现除了服务器加强防毒以外,从网站本身代码来说,我们该如何去做呢?
------解决方案--------------------过滤前台提交过来的信息,写个方法过滤HTML和<script>等等。还有就是不使用拼接的sql
------解决方案--------------------服务器中毒了。
------解决方案--------------------不见得就是你那网站注入的,如果是通过其他网站感染的呢?
------解决方案--------------------字符串过滤
static public string HtmlEncode(string str)
{
str = str.Replace("&", "&");
str = str.Replace("<", "<");
str = str.Replace(">", ">");
str = str.Replace("'", "''");
str = str.Replace("*", "");
str = str.Replace("\n", "<br/>");
str = str.Replace("\r\n", "<br/>");
//str = str.Replace("?","");
str = str.Replace("select", "");
str = str.Replace("insert", "");
str = str.Replace("update", "");
str = str.Replace("delete", "");
str = str.Replace("create", "");
str = str.Replace("drop", "");
str = str.Replace("delcare", "");
if (str.Trim().ToString() == "") { str = "无"; }
return str.Trim();
}
最好用存储过程
DbHelper
用2.0DbProviderFactories
这带参数的。。
------解决方案--------------------在global里添加,防止注入
参考
http://www.cnblogs.com/kokoliu/archive/2008/05/25/1207051.html
http://www.cnblogs.com/zss1100/articles/663538.html
------解决方案--------------------在global里添加,防止注入
我也是用这种方法的,,就是把request的过滤...不过服务器控件就不知怎么过了
------解决方案--------------------是你服务器存在漏洞被入侵了,如果是服务器上面文件是好的,而打开网页存在这些js脚本的话,那么就是服务器被arp攻击了
------解决方案--------------------用正则表达式去除内容中的html标签
String noHTMLString = htmlString.replaceAll("\\<.*?\\>",
"");
------解决方案--------------------这一般和你自己的网站没有关系
是服务器上的某个网站都了毒
我遇到几次
------解决方案--------------------不是通过 SQL 注入的,通过 SQL 注入的 <script> 标签不会在源码里出现,而是动态生成。这一般来说是网站的问题。
------解决方案--------------------服务器中病毒了!
------解决方案--------------------首先得确定放在服务器上的文件的读写权限.如果被服务器扫描后,获取到写权限后,那就是想怎么写就怎么写了.
你可以看一下你的文件是在什么时候被修改的,然后看一下服务器的日志文件,你就发现其中的问题了.
不信,你可以设置一些文件为只读,我想就肯定写不了...
希望你认真配置发你的网站的服务器的安全配置.
------解决方案--------------------如果局域网里的服务器有中病毒 发送arp包的话 你的服务器也会中标的 效果就是在页面中插入<script></script>