玩过web的SQL注入的网友知道,如果在执行SQL语句之前没有进行对带入参数的检测,那么就可以通过他们执行很多非法越权的操作.
同样的,在软件开发中同样有这个问题,这个问题在系统的登录体现最为明显,当然其他的地方也有存在但是原理都一样,我们可以举一反三.
针对MFC中的开发,我们可以通过以下代码来防止这种BUG:
// 检查非法登录,过滤单引号注入
// 这里为什么要+1呢?主要是当单引号在第一个位置,find函数返回时0
if((m_User.Find("'",0)+1)&&(m_Pwd.Find("'",0)+1))
{
AfxMessageBox("请勿进行非法登录!");
exit(0);
return ;
}
m_User变量为CString类型,与用户名输入控件绑定;
m_Pwd变量为CString类型,与用户密码输入控件绑定;
使用CString类型可以很方便的使用其类成员函数find找到非法字符.这里仅仅考虑了单引号,其实已经足够,也许我考虑的不周全,大家可以提出意见.