怀疑是SQL的注入式攻击的。可是我已经替换了很多字符了。如下:
Regex regex1=new Regex("'");
Regex regex2=new Regex("net user");
Regex regex3=new Regex("xp_cmdshell");
Regex regex4=new Regex("/add");
Regex regex5=new Regex("exec master.dbo.xp_cmdshell");
Regex regex6=new Regex("net localgroup administrators");
Regex regex7=new Regex("select");
Regex regex8=new Regex("count");
Regex regex9=new Regex("Asc");
Regex regex10=new Regex("char");
Regex regex11=new Regex("mid");
Regex regex12=new Regex(":");
Regex regex13=new Regex("insert");
Regex regex14=new Regex("delete from");
Regex regex15=new Regex("drop");
Regex regex16=new Regex("update");
Regex regex17=new Regex("truncate");
Regex regex18=new Regex("from");
Regex regex19=new Regex("%");
Regex regex20=new Regex("--");
Regex regex21=new Regex("Desc");
攻击的人将数据库里的表全部删除了。1。使用动态sql语句的地方,我都用了将上面的字符替换为了空格了。
2。使用存储过程的地方,我没有替换的。因为看到有人说使用存储过程似乎不存在被注入式攻击的。
3。下载了NBSI2.0来做测试。可是好像我用的方法不对,扫描后没有显示有何种漏洞。
请达人帮忙
Regex regex1=new Regex("'");
Regex regex2=new Regex("net user");
Regex regex3=new Regex("xp_cmdshell");
Regex regex4=new Regex("/add");
Regex regex5=new Regex("exec master.dbo.xp_cmdshell");
Regex regex6=new Regex("net localgroup administrators");
Regex regex7=new Regex("select");
Regex regex8=new Regex("count");
Regex regex9=new Regex("Asc");
Regex regex10=new Regex("char");
Regex regex11=new Regex("mid");
Regex regex12=new Regex(":");
Regex regex13=new Regex("insert");
Regex regex14=new Regex("delete from");
Regex regex15=new Regex("drop");
Regex regex16=new Regex("update");
Regex regex17=new Regex("truncate");
Regex regex18=new Regex("from");
Regex regex19=new Regex("%");
Regex regex20=new Regex("--");
Regex regex21=new Regex("Desc");
攻击的人将数据库里的表全部删除了。1。使用动态sql语句的地方,我都用了将上面的字符替换为了空格了。
2。使用存储过程的地方,我没有替换的。因为看到有人说使用存储过程似乎不存在被注入式攻击的。
3。下载了NBSI2.0来做测试。可是好像我用的方法不对,扫描后没有显示有何种漏洞。
请达人帮忙
解决方案 »
- entity framework的code first模式创建的数据库使用数据库账户登录的问题
- 返回数据为什么刷新
- [求助]关于Page.unload的问题
- 无法在WEB服务器上启动调试,登录失败:未知的用户名或者密码不正确
- 新发现:google的orkut.com网站是基于.net的。!!!!!!
- 跪求:简单的加密算法
- 能否用js更新web窗体???
- 求同学录的源码(asp.net-vb.net)
- 请问怎么给File Filed控件赋值
- 高分求主从表应用问题,在线等
- 请问怎样控制DataGrid控件的大小?
- [近乎跪求] 编译Infragistics NetAdvantage源码问题 [用过的帮顶! 改过源码并成功使用的请进! 对Asp.net组件开发熟悉的人请进!]
奇怪ing
我不是很清楚。。不过同在一个服务器的别人的数据库就没有问题。我也在联系数据库管理员了。。看看是不是权限的问题的。。
不过。目前还是要先考虑自身是不是还有什么缺陷的。
如果就你这样替换,总会有漏掉的,当然,也不能保证MS的很完善了,但总比自己写好.
其次, 关闭其他不用的应用服务和端口;
应该就够了
首先, 程序不要用sa帐号, 新建一个新小权限的帐号;应该没有sa帐号的,新建一个小权限的帐号,这个,我看到很多地方都这么说了,但是不是很懂的,小权限指的是什么呢?不给写入,更新这样的么?还有啊,我想要知道的是:
1。存储过程里的参数要不要替换那些字符。
2。到底是我程序代码的问题,还是数据库本身不安全。谢谢大家。
2.存储过程,其实说的是使用参数式写入才能防止攻击,并非是数据库的存储过程.主要是运用参数式写入的时候,每一个写入的值,都必须与字段类型相符,比如说时间值,你就必须先格式化成时间DATETIME才可写入,如果是文本,则它将自动处理为纯粹的文本,不再考虑是否有别的含义.这样就避免了绝大多数的攻击.
string sql = "select * from table where id=" + ID;
string sql = "select * from table where myName='" + myName + "'";如果是数字(第一种)的话,判断是不是数字;
如果只字符串(第二种)的话,只要过滤掉 ' 就行了
myName = myName.replace("'","");
然后就是过滤最关键的"'",基本上的SQl注入都是通过构造Sql语句来完成的,一般都要用到"'"单引号。
如果有可能的化,尽量的改用存储过程!
你过滤再多字符也没用吧,注入是不是不分大小写的呢?
其次, 关闭其他不用的应用服务和端口;
你说,我的那段代码没有执行,这个我调试了,成功了,可以替换所有上面需要限制的字符。我现在在想,如果使用存储过程,但是后面不写上参数的类型,是不是也可以被攻击。就像 hchxxzx(NET?摸到一点门槛) ( ) 信誉:103 说的:2.存储过程,其实说的是使用参数式写入才能防止攻击,并非是数据库的存储过程.主要是运用参数式写入的时候,每一个写入的值,都必须与字段类型相符,比如说时间值,你就必须先格式化成时间DATETIME才可写入,如果是文本,则它将自动处理为纯粹的文本,不再考虑是否有别的含义.这样就避免了绝大多数的攻击