【发布时间】:2010-10-25 01:22:23
【问题描述】:
所以,当我将数据保存到数据库中时,PHP 会在单引号或双引号上添加一个 \。这很好。
但是,当使用 json_encode() 将数据传回客户端时;像 McDonald's 这样的 TEXT 在 DB 中存储为 McDonald's 但一旦从 PHP 传回 js,它将被编码为 McDonald\'s
由于我使用的是 jQuery,是否有任何插件可以轻松做到这一点?或者我应该用来正确剥离斜线的任何功能?显然,如果有像\\\\s 这样的情况,函数应该返回\s。 :)
对不起,伙计们。我想我的问题太复杂了。我让它更简单怎么样..
如果我有一个 javascript 变量:
var abc = "McDonald\'s";
var bcd = "I need a slash \\ ";
var cde = "save the double quote \"";
我怎样才能去掉 \' ?我应该使用什么正则表达式?
【问题讨论】:
-
我有点担心这里的很多答案。我的 PHP 安全知识有些过时了,所以我真的没有资格在这里给出一个好的答案,但至关重要的是,如果您确实关闭了魔术引号,请将其替换为 better 转义系统。您的目标应该是防止 SQL 注入和跨站点脚本攻击。我通常会使用
mysql_real_escape_string($user_input)进入数据库并使用htmlentities($db_output)进入客户端——但这可能不再被认为是100% 安全的。希望有人能提供更好的建议。 -
您在 JS 中使用什么来解析 JSON?如果生成正确(
json_encode会这样做),无论您使用什么都可以消除所有内容。 -
@Andrew 这个建议仍然是合理的,尽管通常你想用
htmlspecialchars()编码到一个视图。就够了。 -
嗨@alex。这是一罐我没有资格打开的蠕虫,但我过去的偏好是使用
htmlentities(),因为它对用户输入的破坏性明显更大,对呈现的页面没有任何明显的影响(只要您匹配页面编码)。三年前,当我对黑客方法进行一些研究时,我对一个坚定的黑客可以使用的各种 unicode 字符感到震惊——我仍然不明白这些技术中有多少是有效的。我仍然不能 100% 确定htmlentities()是否安全,但我知道它比htmlspecialchars()更安全。 -
@Andrew Well
htmlspecialchars()仅针对通常用于 XSS 的字符。我认为使用htmlentities()会做同样的事情,但只是使用&#xx;样式编码对奇异字符进行膨胀,大多数编码的东西可以通过使用UTF-8 作为字符集来实现。
标签: javascript jquery stripslashes