gpt4 book ai didi

php - 清理/转义用户输入和输出

转载 作者:行者123 更新时间:2023-11-29 05:29:31 28 4
gpt4 key购买 nike

我知道我已经asked一个关于 sanitizer 和转义的问题,但我有一个问题没有得到回答。

好了,到此为止。如果我有一个 PHP 脚本并且我 GET用户输入和SELECT它来自 mySQL 数据库,如果我没有逃脱 < 是否重要/是否存在任何安全风险和 >通过使用 htmlspecialchars , htmlentitiesstrip_tags因此允许从数据库中选择/搜索 HTML 标签?因为已经通过使用 trim() 对输入进行了清理, mysql_real_escape_stringaddcslashes (\%_)。

使用htmlspecialchars的问题是它转义了用户输入应该允许的符号 (&)(我想 htmlentities 也是如此?)。配合使用strip_tags ,诸如“John”之类的内容会导致 PHP 脚本选择并显示 John 的结果,这是它不应该做的。

这是我在从数据库中选择之前用于清理输入的 PHP 代码:

if(isset($_GET['query'])) {
if(strlen(trim($_GET['query'])) >= 3) {
$search = mysql_real_escape_string(addcslashes(trim($_GET['search']), '\%_'));
$sql = "SELECT name, age, address WHERE name LIKE '%".$search."%'";
[...]
}
}

这是我显示“x 匹配 y 结果”的输出。

echo htmlspecialchars(strip_tags($_GET['search']), ENT_QUOTES, 'UTF-8')." matched y results.";

最佳答案

解决此问题的一个好方法是使用 MySQLi,它使用准备好的语句,基本上可以在后端为您转义所有内容,并提供针对 SQL 注入(inject)的强大保护。不转义 GET 数据与不转义任何其他输入一样危险。

关于php - 清理/转义用户输入和输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16173724/

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