防止SQL注入的6个要点

SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。防止SQL注入,我们可以从以下6个要点来进行:

  • 1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和 双"-"进行转换等。
  • 2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
  • 3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
  • 4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
  • 5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装
  • 6.sql注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用sql注入检测工具jsky,网站平台就有亿思网站安全平台检测工具。MDCSOFT SCAN等。采用MDCSOFT-IPS可以有效的防御SQL注入,XSS攻击等。

PHP的MySQL扩展提供了mysqli_real_escape_string()函数来转义特殊的输入字符。

if (get_magic_quotes_gpc()) 
{
  $name = stripslashes($name);
}
$name = mysqli_real_escape_string($conn, $name);
 mysqli_query($conn, "SELECT * FROM users WHERE name='{$name}'");

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一个会写诗的程序员的博客

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES/NO) 解决方案1.停止mysql

初次安装mysql,net start mysql,然后输入mysql -u root -p,

4223
来自专栏Python、Flask、Django

Ajax与php进行数据交互

1442
来自专栏乐沙弥的世界

MySQL 修改用户密码及重置root密码

    为数据库用户修改密码是DBA比较常见的工作之一。对于MySQL用户账户的密码修改,有几种不同的方式,推荐的方式使用加密函数来修改密码。本文主要描述了通过...

3222
来自专栏转载gongluck的CSDN博客

利用xinetd实现简单web服务器(镜像站)

浏览效果: ? linux服务器安装xinetd后,在/etc/xinetd.d/目录下创建xhttpd文件,并输入内容: service xhttpd { ...

4166
来自专栏窗户

C语言/原子/编译,你真的明白了吗?

  说到原子,类似于以下的代码可能人人都可以看出猫腻。 /* http://www.cnblogs.com/Colin-Cai */ #include <std...

2179
来自专栏上善若水

013 windows10 mysql的安装

Access denied for user 'root'@'localhost' (using password:YES) 解决方案 问题的解决

1363
来自专栏Java成神之路

mysql_异常_01_Access denied for user 'root'@'192.168.1.13' (using password: YES)

使用navicat premuim 连接 虚拟机mysql数据库时 ,抛出如下错误:

853
来自专栏闵开慧

Ubuntu 下mysql常用操作

1:打开mysql数据库 mysql -h主机地址 -u用户名 -p用户密码 mysql -h110.110.110.110 -uroot -pabcd123 ...

3517
来自专栏L宝宝聊IT

SQL server 数据库的存储过程和触发器

1663
来自专栏醉梦轩

Ubuntu 16.04 部署MySQL服务

MySQL是一款开源的关系型数据库管理系统,大量公司都在使用它,或是在它的基础上做二次开发。有时,我们会需要在Linux系统上部署MySQL服务用于测试。

981

扫码关注云+社区