二、原理 1. 利用输入验证漏洞:当网站应用程序对用户输入没有进行充分的验证和过滤时,攻击者就可以利用这一点。例如,在一个登录页面,正常情况下输入用户名和密码进行验证。但如果程序没有正确处理输入,攻击者可以在用户名或密码字段中输入恶意SQL语句片段。 2. 破坏查询逻辑:假设网站有一个查询功能,根据用户输入的参数从数据库中检索数据。如果输入未被妥善处理,攻击者输入的SQL语句会被拼接到原本的查询语句中,改变查询的本意。比如原本的查询是“SELECT * FROM users WHERE username = '正常用户名' AND password = '正常密码'”,攻击者通过注入可以变成“SELECT * FROM users WHERE username = '正常用户名' OR 1=1 --”,这样无论密码是什么都能通过验证,因为“OR 1=1”恒为真,“--”后面的内容会被数据库视为注释而忽略。