大家好,今天给大家分享数据库安全问题,也是大家非常关心的事情,不足之处,欢迎批评指正。
在日常开发过程中,程序员一般只关心sql是否实现预期的功能,而对于sql安全问题一般都不太重视。实际上,如果SQL语句写作不当,将会给应用系统造成很大的安全隐患,其中最重要的隐患就是sql注入。
SQL注入简介:利用某些数据库外部接口将用户数据插入到实际的数据库操作语言当中,从而入侵数据库乃至操作系统当中。它的产生主要是由于程序对用户输入的数据没有进行严格过滤,导致非法数据库查询语句的执行。
SQL注入攻击具有很大的危害,攻击者可以利用他的读取、修改或者删除数据库内的数据,获取数据库中的用户名和密码等敏感信息,甚至可以获得数据库管理员的权限,而且,SQL注入也很难防范。
开发中可以采取的应对措施:
MYSQL服务器端并不存在共享池的概念,所以在MYSQL上使用绑定变量(Bind Variable)最大的好处是为了避免SQL注入,增加安全性。
使用应用程序提供的转换函数:
MYSQL C API :使用 mysql_real_escape_string()API调用;
MYSQL++:使用escape和quote修饰符;
php:使用mysql_real_escape_string()函数(适用于PHP4.3.0版本)。从PHP5开始,可以使用扩展的MYSQLI,这是对MYSQL新特性的一个扩展支持,其中一个优点就是支持PrepareStatement.
自己定义函数进行校验:
如果现有转换函数仍然不能满足要求,则需要自己编写函数进行输入校验。
总结,主要从SQL注入的角度讨论了SQL的安全问题,阐述了SQL注入的原理以及防范措施。SQL注入问题是一个数据库应用普遍存在的安全问题。
欢迎大家在评论区留下自己的观点!
领取专属 10元无门槛券
私享最新 技术干货