前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP防止SQL注入的方法

PHP防止SQL注入的方法

作者头像
ascii0x03
发布2018-04-12 13:02:22
1.9K0
发布2018-04-12 13:02:22
举报

菜鸟今天刚刚学习PHP和SQL方面的内容,感觉坑比较深,做一下简单的记录,欢迎批评交流。

主要有两种思路一种是过滤,一种是使用占位符,据说第二种可以根本解决SQL注入,本人涉猎不深,还有待研究。

下面是过滤思路的示例代码,需要注意以下几点:

1.判断数据类型加引号,防止被识别为数字。

2.使用stripslashes()转义/等

3.用real_escape_string()过滤'等(使用前要注意设置字符集)

4.最后加上了HTML编码的函数htmlentities(),防止XSS。

此外还要注意设置表、列的名字不被人猜到,访问控制,防止二次注入,设置白名单过滤作为选项的输入等。

网上还有很多其他资料,这里只是简单记录一个纲要,欢迎补充要注意的纲要点。

代码语言:javascript
复制
 1 $conn = new mysqli($hn, $un, $pw, $db);
 2 
 3 //设置字符集    
 4 if (!$conn->set_charset('utf8')) {
 5         printf("Error loading character set utf8: %s\n", $conn->error);
 6         die("gg");
 7     } else {
 8         printf("Current character set: %s\n", $conn->character_set_name());
 9     }
10 //
11   function get_post($conn, $var)
12   {
13       $string = $_POST[$var];
14       if (get_magic_quotes_gpc()) 
15           $string = stripslashes($string);
16       if (!is_numeric($string))
17       {
18           $string = "'" . $conn->real_escape_string($string) . "'";
19       }
20       return htmlentities($string);
21     
22   }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-04-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档