当前位置:编程学习 > C#/ASP.NET >>

GET方式防止sql注入,有啥好办法吗?我这个把有用的单词也过滤掉了。

                string SqlStr = "'|and|exec|execute|insert|create|drop|table|from|grant|use|group_concat|column_name|" +
                "information_schema.columns|table_schema|union|where|select|delete|update|order|by|count|*|" +
                "chr|mid|master|truncate|char|declare|or|;|-|--|+|,|like|//|/|%|#";


搜集到的sql关键字,但是用替换的话会误伤一些正常文章,有啥好办法吗? --------------------编程问答-------------------- http://topic.csdn.net/u/20090808/19/6339d889-d8d9-454e-99af-acdbfed4dc49.html --------------------编程问答-------------------- 把SQL语句参数化 --------------------编程问答-------------------- 用过滤或者替换的方法防止sql注入,是完全不正确的做法。应该用参数化SQL:http://www.cnblogs.com/asdlx/archive/2010/05/14/1735410.html --------------------编程问答--------------------
引用 2 楼  的回复:
把SQL语句参数化


添加和修改全都用参数,只有查询的时候会动态拼接,所以在添加和修改部分不必进行注入过滤吧。 --------------------编程问答-------------------- if(Check(url)==true){

  // do it
} --------------------编程问答-------------------- 过滤 关键字, 最好是 以 XML 结构序列化,不是 XML 服务器直接报错出去。 --------------------编程问答--------------------
引用 4 楼  的回复:
引用 2 楼 的回复:

把SQL语句参数化


添加和修改全都用参数,只有查询的时候会动态拼接,所以在添加和修改部分不必进行注入过滤吧。

同样需要过滤,如果别个恶意伪造,那就可以看到他想看到的任何数据了,这设计到数据安全和保密。很多信息是不能让所有人看到的,只是针对特地的用户 --------------------编程问答-------------------- 使用SqlParameter来设置参数,会自动转意,无法注入的。 --------------------编程问答-------------------- 替换法是极其落后的方式,用来掩饰漏洞的。

但还是没法掩饰用16进制编码的注入。 --------------------编程问答-------------------- 参数化才是王道 --------------------编程问答-------------------- 可以用存储过程写 --------------------编程问答-------------------- SqlParameter  系统自带的不用 自己写个什么劲啊 --------------------编程问答-------------------- 呵呵,有机会再来看看   --------------------编程问答-------------------- 不想费脑筋的话,可用360的站长防护脚本,你可以看一下。使用也很容易。
http://bbs.webscan.360.cn/forum.php?mod=viewthread&tid=711&extra=page%3D1 --------------------编程问答-------------------- 在数据库库中写入存贮工程或者函数 当你在需要时调用 据说这样可以防止sql注入 --------------------编程问答-------------------- sql参数化才是你的选择,别追求简单暴露了安全性。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,