相关疑难解决方法(0)

UTF-8一路走来

我正在设置一个新服务器,并希望在我的Web应用程序中完全支持UTF-8.我过去曾在现有的服务器上尝试过此操作,但最终似乎不得不回归ISO-8859-1.

我在哪里需要设置编码/字符集?我知道我需要配置Apache,MySQL和PHP来执行此操作 - 是否有一些我可以遵循的标准清单,或者可能是在出现不匹配的地方进行故障排除?

这适用于运行MySQL 5,PHP,5和Apache 2的新Linux服务器.

php mysql linux apache utf-8

1146
推荐指数
13
解决办法
15万
查看次数

mysql_real_escape_string的缺点?

我在这里看到一些人说使用连接查询mysql_real_escape_string不会保护你(完全)免受SQL注入攻击.

但是,我还没有看到一个输入示例,它说明了一种mysql_real_escape_string无法保护你的攻击.大多数示例忘记了mysql_query仅限于一个查询并且使用mysql_real_escape_string不正确.

我能想到的唯一例子如下:

mysql_query('DELETE FROM users WHERE user_id = '.mysql_real_escape_string($input));
Run Code Online (Sandbox Code Playgroud)

这不会保护您免受以下输入:

5 OR 1=1
Run Code Online (Sandbox Code Playgroud)

我认为这是错误的使用mysql_real_escape_string而不是缺点,它是为字符串而不是数值设计的.您应该转换为数字类型,或者如果要在清理时将输入视为字符串,则应在查询中执行相同操作并在其周围加上引号.

任何人都可以提供一个可以绕过的输入示例mysql_real_escape_string,它不依赖于对数值的错误处理或忘记mysql_query只能执行一个查询吗?

编辑:我对它的局限性感兴趣,mysql_real_escape_string而不是将它与替代品进行比较,我意识到新项目有更好的选择,我并不反对.

php mysql sql-injection mysql-real-escape-string

12
推荐指数
1
解决办法
2128
查看次数