我有一个朋友正在尝试为一个项目提供帮助,我绝对不是渗透测试方面的专家,事实上,这确实是我的新手,但他要我帮助在他的程序中找出潜在的安全问题。
我不太确定,但是我有一种感觉,特别是一段代码容易受到SQL注入的攻击,我想知道是否有人可以提供示例说明如何受到攻击(如果存在)以及任何建议关于如何清理输入内容。
这是代码段
nextwork:
cDataBase *db = NewManagerDB();
if( !db->QueryDirect( dbginfo, "SELECT * FROM Account WHERE UserID = '%s'", szManagerID ) )
{
ErrDB(db);
DelManagerDB(db);
if( Retire == MAX_RETIRE )
{
LOG("QueryDirect error MAX_RETIRE db QueryDirect failed");
SendManagerAuthenResult( MgrCode::SvrError );
return;
}
Retire++;
goto nextwork;
}
谢谢您的帮助!
答案 0 :(得分:1)
如何消毒(不确定100%如何使用特定的db
类实现)
db->Parameters.AddWithValue("@userid", szManagerID);
if( !db->QueryDirect( dbginfo, "SELECT * FROM Account WHERE UserID = @userid" ) )
以下是SQL注入的示例:
szManagerID = "' OR UserID LIKE '%";
结果查询将是:
SELECT * FROM Account WHERE UserID = '' OR UserID LIKE '%'
因此您可以获得所有用户的帐户数据