首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么时候使用哪种字符串转义方法?

什么时候使用哪种字符串转义方法?
EN

Stack Overflow用户
提问于 2011-04-24 21:58:21
回答 3查看 953关注 0票数 3

好的,这里有很多不同的字符串转义函数,比如htmlentities()mysql_real_escape_string()addslashes()

但是在什么情况下我应该使用哪一个呢?

请提供资源和意见:)

EN

回答 3

Stack Overflow用户

发布于 2011-04-24 22:17:10

在什么情况下应该使用哪种

  • htmlentities().永远不要使用它,而是使用htmlspecialchars()。用于打印不可信用户输入的browser.
  • mysql_real_escape_string是mysql数据库特有的功能。下面是关于mysql数据库security
  • addslashes().的a comprehensive guide I wrote exactly on topic,在哪里使用它,在哪里不使用它,以及您需要知道的其他内容。那得看情况。大多数时候你根本不需要它
票数 3
EN

Stack Overflow用户

发布于 2011-04-24 22:07:16

在将数据插入mysql数据库时,请使用以下命令:

代码语言:javascript
复制
mysql_real_escape_string()

当你要显示用户给你的内容时:

代码语言:javascript
复制
htmlentities()

如果你的数据库在php中没有自己的函数,你可以使用:addslashes(),但是当你有更好的东西(mysql_real_escape_string())时,不推荐使用。

有关更多信息,请参阅以下内容:

Htmlentities vs addslashes vs mysqli_real_escape_string

附注:您应该使用mysqli_real_escape_string(),而不是mysql_real_escape_string()。

编辑:

为了真正防止攻击,这是一个很好的阅读材料:http://www.php.net/manual/en/security.database.sql-injection.php...

您还应该查看准备好的语句:http://www.php.net/manual/en/mysqli.prepare.php

在堆栈溢出上也可以找到很多信息。

票数 1
EN

Stack Overflow用户

发布于 2011-04-24 22:06:42

它们都是同一主题的变体:

代码语言:javascript
复制
$bar = "O'Reilly";
"foo = '$bar'";  // foo = 'O'Reilly' -> invalid syntax

如果字符串应该遵循特定的语法,那么盲目地将字符串连接在一起可能会导致违反语法。往好了说,这是一个恼人的问题,往坏了说,这是一个安全问题。转义值可以避免这些问题。通用示例:

代码语言:javascript
复制
"foo = '" . escape($bar) . "'";  // foo = 'O\'Reilly'

所有不同的函数都为不同的语法正确转义值:

用于转义HTML输出的htmlentities

用于转义SQL查询的值的mysql_real_escape_string

addslashes…对任何事情都没有好处,不要使用。

用于编码/转义/转换Javascript格式的值的json_encode

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5770912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档