phpaddslashes和mysql_real_escape_string
mysql string escape Real phpaddslashes
2023-06-13 09:14:15 时间
很好的说明了addslashes和mysql_real_escape_string的区别,虽然国内很多PHPcoder仍在依靠addslashes防止SQL注入(包括我在内),我还是建议大家加强中文防止SQL注入的检查。addslashes的问题在于黑客可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xbf5c27,成为一个有效的多字节字符,其中的0xbf5c仍会被看作是单引号,所以addslashes无法成功拦截。
当然addslashes也不是毫无用处,它是用于单字节字符串的处理,多字节字符还是用mysql_real_escape_string吧。
另外对于php手册中get_magic_quotes_gpc的举例:
复制代码代码如下:
当然addslashes也不是毫无用处,它是用于单字节字符串的处理,多字节字符还是用mysql_real_escape_string吧。
另外对于php手册中get_magic_quotes_gpc的举例:
if(!get_magic_quotes_gpc()){
$lastname=addslashes($_POST[‘lastname"]);
}else{
$lastname=$_POST[‘lastname"];
}
最好对magic_quotes_gpc已经开放的情况下,还是对$_POST["lastname"]进行检查一下。
再说下mysql_real_escape_string和mysql_escape_string这2个函数的区别:
mysql_real_escape_string必须在(PHP4>=4.3.0,PHP5)的情况下才能使用。否则只能用mysql_escape_string,两者的区别是:
mysql_real_escape_string考虑到连接的当前字符集,而mysql_escape_string不考虑。
总结一下:
addslashes()是强行加;
mysql_real_escape_string()会判断字符集,但是对PHP版本有要求;
mysql_escape_string不考虑连接的当前字符集。
相关文章
- MySQL Error number: MY-013613; Symbol: ER_IB_ERR_DDL_LOG_INSERT_FAILURE; SQLSTATE: HY000 报错 故障修复 远程处理
- MySQL集群:如何实现高可用性(mysql集群配置)
- MySQL表之间的关系(mysql表与表关系)
- Mysql:一步一步指导MySQL安装版:一步一步指引安装(mysql安装版安装)
- 数据库MySQL如何将低版本数据库导入新版本(mysql导入低版本)
- MySQL去重复函数:轻松实现数据库中数据去重(mysql去重复函数)
- MySQL进程死锁:解决方案实施(mysql进程死锁)
- MySQL索引文件:实现高效查询的关键所在(mysql的索引文件)
- MySQL修改视图权限的步骤及方法(mysql修改视图权限)
- MySQL远程使用:掌握基础知识,远程操作Mysql数据库。(mysql远程使用)
- Efficiently copying data in bulk with MySQL(mysql批量复制数据)
- 构建MySQL高性能架构:优化数据库引擎、索引、缓存等策略(mysql高性能架构)
- MySQL参数详解,让你更加了解Mysql参数定义及优化。(mysql参数定义)
- 电商网站赖以MySQL助力发展(电商mysql)
- 解析MySQL中show使用方法(mysql中show使用)
- MySQL中lib存储优化指南(mysql中lib存储)
- MySQL 如何配置Connection String(c mysql 配置串)
- MySQL中escape函数的使用方法及作用详解(mysql中escape)
- 解锤MySQL使用CMD窗口开启之旅(cmd窗口打开mysql)
- MySQL如何写入环境变量(mysql中写入环境变量)
- MySQL自动启动问题如何解决(mysql一直自动打开)
- MySQL服务始终无法启动(mysql一直无法启动)
- Mysql 数据库丢失别慌来了解一下 MySQL 不见的可能原因及解决办法(mysql不见)
- Mysql联合查询轻轻松松查询两个数据库的数据(mysql两库同时查)