gpt4 book ai didi

php - 清理/过滤用户评论的最佳方式?

转载 作者:行者123 更新时间:2023-12-02 07:15:26 50 4
gpt4 key购买 nike

我目前正在使用此过程来清理/过滤用户输入的评论 ->
这个是用来去掉斜线的……和

 if (get_magic_quotes_gpc()) {
function stripslashes_deep($value)
{
$value = is_array($value) ?
array_map('stripslashes_deep', $value) :
stripslashes($value);

return $value;
}

$_POST = array_map('stripslashes_deep', $_POST);
$_GET = array_map('stripslashes_deep', $_GET);
$_COOKIE = array_map('stripslashes_deep', $_COOKIE);
$_REQUEST = array_map('stripslashes_deep', $_REQUEST);
}

然后评论通过这个函数来清理数据...

   function my_strip_tags($str) {
$strs=explode('<',$str);
$res=$strs[0];
for($i=1;$i<count($strs);$i++)
{
if(!strpos($strs[$i],'>'))
$res = $res.'&lt;'.$strs[$i];
else
$res = $res.'<'.$strs[$i];
}
return strip_tags($res);
}

在此之后,它使用准备好的语句直接进入数据库..

function add_comment($comment,$type,$update_id,$user_id){
$query="INSERT INTO comment_updates (updateid,userid,comment) VALUES(?,?,?)";
if($stmt=$this->conn->prepare($query)) {
$stmt->bind_param('sss',$update_id,$user_id,$comment);
$stmt->execute();
if($this->conn->affected_rows==1){
$stmt->close();
return true;
}
}
}

我只是想知道这是否足够安全,或者他们是否有其他更好的选择...谢谢

最佳答案

考虑将数据存储到数据库时,最重要的事情是转义它;使用 mysql_real_escape_string , 或 mysqli_real_escape_string , 或 PDO::quote ,取决于您使用的数据库(或 oracle/pg/...的其他函数)

另一种解决方案是使用准备好的语句(参见 mysqli::prepare 和/或 PDO::prepare——旧的 mysql_* 扩展不支持这些语句),它将处理转义数据你的地方;-)


在考虑 HTML 输出时,您有两种解决方案:

  • 接受 HTML 并使用像 HTMLPurifier 这样的库过滤/清洁它;它将允许准确指定允许哪些标签和属性,并为您提供干净有效的 HTML 作为输出。
  • 尝试删除 HTML,就像您正在做的那样——并不总是有效(如果您忘记了一些特殊情况怎么办?)
  • 使用 htmlentities 转义 HTML或 htmlspecialchars : 不一定好看,但输出看起来像用户的输入。

我会选择第一个或最后一个解决方案;你的感觉更“危险”——但这只是一种感觉 ^^ (总体思路是“不要重新发明轮子”)

关于php - 清理/过滤用户评论的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1446431/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com