我有一个文本区域,用户也可以添加注释。在下一页上我使用$_POST[Comments]
显示输入的内容。我有一个编辑按钮可以返回并查看输入的内容并编辑注释,但是当我显示$_POST[Comments]
它显示了撇号之前的所有内容。
Example:
最初输入:Let's try this.
编辑时:Let
现在,当我将它传递给服务器进行 SQL 添加时,我使用以下函数来防止 SQL 注入
function keepSafe($value) {
if (get_magic_quotes_gpc()) {
$value = stripslashes($value);
}
if (!is_numeric($value)) {
$value = "'" . mysqli_real_escape_string($value) . "'";
}
return $value;
}
以下是我用来格式化 SQL 插入输入的内容。
$Comments = str_replace("\n","<br />",$_POST['CustComments']);
$Comments = keepSafe($_POST['Comments']);
在提交之前进行编辑时,我需要能够看到注释部分中的所有撇号。我想确保当我提交它时,它是一个阻止 SQL 注入的安全代码。
撇号的问题:
您可能使用这样的输入:
<input type='text' value='<?php echo $value;?>'/>
问题是,如果该值有撇号,就会发生这种情况:
<input type='text' value='Let's play'/>
因此,由于变量中的撇号,值标记已结束。
要修复它,只需使用 htmlspecialchars 和 ENT_QUOTES:
<?php
$value = htmlspecialchars("Let's play", ENT_QUOTES);
?>
<input type='text' value='<?php echo $value; ?>'/>
这样,撇号就会被编码,并且可以在您的表单中进行编辑
关于SQL注入:
只需使用mysqli 的准备语句你会没事的。为了确保您免受 XSS 侵害,请始终htmlspecialchars
HTML 输出中的用户输入。更好的方法是仅将输入过滤为您需要的内容,然后仅将过滤后的输入保存到数据库中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)