SQL注入漏洞产生的原因 ? 如何防止?

SQL注入产生的原因:程序开发过程中不注意规范书写sql语句和对特殊字符进行过滤,导致客户端可以通过全局变量POST和GET提交一些sql语句正常执行。

防止SQL注入:

开启配置文件中的magic_quotes_gpc和magic_quotes_runtime设置

执行sql语句时使用addslashes进行sql语句转换

Sql语句书写尽量不要省略小引号和单引号

过滤掉sql语句中的一些关键字:update、insert、delete、select、*

提高数据库表和字段的命名技巧,对一些重要的字段根据程序的特点命名,取不易被猜到的。

Php配置文件中设置register_globals为off,关闭全局变量注册

控制错误信息,不要再浏览器上输出错误信息,将错误信息写到日志文件中。

如何进行防SQL注入?

过滤掉一些常见的数据库操作关键字:select,insert,update,delete,and,*等或者通过系统函数:addslashes(需要被过滤的内容)来进行过滤。

在PHP配置文件中Register_globals=off;设置为关闭状态 //作用将注册全局变量关闭。比如:接收POST表单的值使用$_POST['user'],如果将register_globals=on;直接使用$user可以接收表单的值。

SQL语句书写的时候尽量不要省略小引号(tab键上面那个)和单引号

提高数据库命名技巧,对于一些重要的字段根据程序的特点命名,取不易被猜到的

对于常用的方法加以封装,避免直接暴漏SQL语句

开启PHP安全模式Safe_mode=on;

打开magic_quotes_gpc来防止SQL注入 Magic_quotes_gpc=off;默认是关闭的,它打开后将自动把用户提交的sql语句的查询进行转换,把'转为\',这对防止sql注入有重大作用。因此开启:magic_quotes_gpc=on;

控制错误信息关闭错误提示信息,将错误信息写到系统日志。

使用mysqli或pdo预处理。

推荐教程:

mysql 性能优化方案

MySQL 数据库设计总结

MySQL 索引及查询优化总结

推荐公众号:【PHPer技术栈】专注后端开发,倡导开源文化,做一个好玩、有趣、有灵魂的PHPer工程师,欢迎大家关注!

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值