WEB站点每天都会遇到各种各样的攻击,除了做好服务层的方法外我们还要做好应用层的防范。
SQL注入攻击原理
- 攻击者在form表中(含post和get请求)输入SQL命令绕过简单验证,欺骗服务器执行恶意的SQL语句
- 开发人员直接使用未经过数据校验及字符过滤的方式来执行SQL语句,也就是手写SQL语句且不对数据进行校验
常见的SQL注入攻击示例
- 登陆表单中需要用户输入 用户名 和 密码, 开发人员校验登陆是使用 类似如下 SQL 语句的
-
'SELECT * from Users WHERE login = ' . $username . ' AND password = ' . $password;
-
- 攻击者在用户名字和密码输入框中输入'或'1'='1之类的内容用来更改SQL语句执行的真实命令,请求服务器后,真正执行的代码如下
-
SELECT * from Users WHERE login = '' or '1'='1' AND password = '' or '1'='1';
-
- 至此就成功的绕过了数据库的权限校验了,成功的获得了WEN站点的权限
- 一旦攻击者一次攻击成功且得知网站如此薄弱后,会加强其他攻击手段,例如:
- 新增或修改、删除数据库表及表内数据
- 跨站攻击同服务器的其他网站、数据库等
- 通过SQL语句执行更多的权限
防范方法
- 登陆校验添加更多的校验
- 做好站点数据库权限的分配,避免涉及到了其他的数据库及站点
- 校验时过滤特殊符号、且检查数据类型并使用预处理语句
总结
- 开发过程中不仅要注意开发效率及WEB性能还需要注意WEB安全