注入攻击是攻击者使用恶意代码注入或感染web程序以达到检索个人信息或破坏系统的目的。攻击者诱使系统认为该命令是正常发起的,系统就会盲目的执行这些命令
SQL注入是一种代码注入技术,用于攻击数据驱动的应用程序。在应用程序中,如果没有做恰当的过滤,则可能会使恶意的sql语句被插到输入字段执行
mysql的注释符有#,--(后面有空格),/**/这3种
动态拼接sql的方式:
例如:后端判断登录的sql是"select count(*) from user where username="+usernameInput.text+" "+ "and password="+passwordInput.text
在数据库中有username为ali
,password为123456
的用户
前端用户名输入框输入ali--
,密码输入框随便输入内容,那么是能登录成功的,因为ali之后的语句都被注释掉了
前端用户名输入框输入ali;drop table user--
,密码输入框随便输入内容,那么不止能登录成功,还会把数据库user表内容删除掉,十分危险
要对用户的输入进行校验,通过正则表达式或限制长度等方式
不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据存取
不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接
数据库中不要直接存放隐私信息(如密码等),要进行加密或hash掉密码和敏感的信息