前几天SQL注入的问题,第二天就赶紧做了一个紧急修补,不过全面检查还没做,今天发现有人在网站上留言,说暴了我们的库(其实就暴了一个遗弃的表),并列出得到的一些数据,直指我本人,说本人技术超烂等等的话。。。。。。。现在想想,大概也知道是谁做了。今年得罪的人多啊。。。。。。
毕竟项目是多个人合作的成果,某些地方粗心没过滤,马上就给了贼人可乘之机, 还好,检查整个逻辑层不需要太多时间,不过也浪费了一个早上,而且错误出在之前辞退的程序员身上(此人并非凶手),郁闷,最郁闷的就是被人羞辱了一翻。所以本人把11月2日定为每年的受耻日,以此警戒自己,此点小细节要注意再注意及其特别的注意。
SQL 注入其实很简单的技术,2年前我也使用过教主的SQL注入工具暴过人家的库,看看真是阴沟里翻船啊。其实防犯SQL也相对比较简单,对于稍微有点经验的程序员都很容易就可以避免这个Bug.最怕的就象我这种情况,时间紧得没机会全面检查,自己都没测试下就放上去了。
我在逻辑层里定义了一个抽象类,检查数据是否有SQL 注入检查,并把相关的信息记录到一个错误记录日志的数据库,这样什么地方出了错,是不是SQL注入或者其他错误,明天都可以检查,其中方法大概的定义如下
public
static
bool
IsGoodSql(
string
namespaceStr,
string
classNameStr,
string
methodNamestr,
string
userID,
string
ipAddress,params
string
[] CheckStr)
... {
//检查CheckStr字段是否有SQL注入
//如果有 插入错误日志数据库,记录 命名空间,类名,方法名,用户 和 ip地址
}
... {
//检查CheckStr字段是否有SQL注入
//如果有 插入错误日志数据库,记录 命名空间,类名,方法名,用户 和 ip地址
}
调用的时候如下
if(IsGoodSQL(命名空间,类名,方法名,用户名,ip地址,字段1,字段2,...))
这样是可以记录到恶意ip和地址,而如果你没检查,这个方法也没用武之地了,我的问题,就是我的手下苯到两个字段只检查一个字段,郁闷啊郁闷。
警记今天是我受耻日!大家如果明年记得,记得给我礼物哦。。。。