我是PHP新手,我有一个表单,人们可以在这个表单中向DB提交值。稍后,这些值将使用JS注入,或者直接放在HTML文档中。
我正在使用以下内容来清理我的输入:
function sanitise($str){
$string = htmlspecialchars($str);
$string = mysql_real_escape_string($str);
return $string;
}这样做的问题是,在我的DB中,带有引号的输入看起来像这样:input's。这意味着如果我在JS中输入这个值,引号将会把一切都搞砸。
我试着这样做,以避免引用:
function sanitise($str){
$string = htmlspecialchars($str);
$string = mysql_real_escape_string($str);
return addslashes($string);
}这会将我的DB条目转换为类似下面的内容:input\'s。这在JS中有效,但如果我将该值直接注入到<div></div>中,那么反斜杠仍将存在……我对我做错了什么感到困惑--我怎么才能清理我的输入,同时通用地转义HTML和JS的特殊字符呢?
发布于 2013-09-18 10:24:11
在工作流程的不同步骤中,数据清理意味着不同的事情。你也不想重复这样做,否则你会传播转义字符。
最简单的情况是在将其用作数字之前检查它是一个数字,例如查找数据库行。下一个最简单的方法是在组装SQL的时候使用mysqli_real_escape_string之类的函数。将数据放入URL或Javascript中的操作也是相同的:您在发出数据时对数据进行转义。
尽可能晚地这样做可以解决两个问题。首先,您不会遇到处理转义数据的问题。第二,这样就不会对数据进行双重转义。
https://stackoverflow.com/questions/18862396
复制相似问题