首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP清理和转义特殊字符

问PHP清理和转义特殊字符
EN

Stack Overflow用户
提问于 2013-09-18 09:18:36
回答 1查看 2.5K关注 0票数 1

我是PHP新手,我有一个表单,人们可以在这个表单中向DB提交值。稍后,这些值将使用JS注入,或者直接放在HTML文档中。

我正在使用以下内容来清理我的输入:

代码语言:javascript
复制
function sanitise($str){
  $string = htmlspecialchars($str);
  $string = mysql_real_escape_string($str);
  return $string;
}

这样做的问题是,在我的DB中,带有引号的输入看起来像这样:input's。这意味着如果我在JS中输入这个值,引号将会把一切都搞砸。

我试着这样做,以避免引用:

代码语言:javascript
复制
function sanitise($str){
  $string = htmlspecialchars($str);
  $string = mysql_real_escape_string($str);
  return addslashes($string);
}

这会将我的DB条目转换为类似下面的内容:input\'s。这在JS中有效,但如果我将该值直接注入到<div></div>中,那么反斜杠仍将存在……我对我做错了什么感到困惑--我怎么才能清理我的输入,同时通用地转义HTML和JS的特殊字符呢?

EN

回答 1

Stack Overflow用户

发布于 2013-09-18 10:24:11

在工作流程的不同步骤中,数据清理意味着不同的事情。你也不想重复这样做,否则你会传播转义字符。

最简单的情况是在将其用作数字之前检查它是一个数字,例如查找数据库行。下一个最简单的方法是在组装SQL的时候使用mysqli_real_escape_string之类的函数。将数据放入URL或Javascript中的操作也是相同的:您在发出数据时对数据进行转义。

尽可能晚地这样做可以解决两个问题。首先,您不会遇到处理转义数据的问题。第二,这样就不会对数据进行双重转义。

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

https://stackoverflow.com/questions/18862396

复制
相关文章

相似问题

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