一如既往,我开始说我正在学习。 我在几本书中看到,甚至在这里,当我们谈论清理时,很多用户,例如,Form>输入>提交,他们使用
function sanitizeexample($param)
{
$param = stripslashes($param);
$param = strip_tags($param);
$param = htmlentities($param);
return $param;
}
$name = sanitizeexample($_POST['name']);
而不是 JUST :
function sanitizeexample($param)
{
$param = htmlentities($param);
return $param;
}
$name = sanitizeexample($_POST['name']);
所以这里的问题。 stripslashes()和strip_tags()提供有关安全性的其他内容吗?或者 htmlentities()就足够了。
我要求知道哪个是最好用的。
答案 0 :(得分:0)
strip_tags()
是否提供增值取决于您的特定用例。如果您htmlentities()
包含html标记的字符串,您将获得在页面上转义和呈现的原始html内容。您给出的示例可能假设这是不您想要的,因此首先执行strip_tags()
,删除html标记。
stripslashes
与addslashes
相反。在现代(PHP> = 5.4)PHP代码中,这不是必需的。在遗留系统上,启用magic_quotes_gpc
后,来自请求变量的用户输入将使用addslashes
自动转义,以使其“安全”#34;直接用于数据库查询。这被广泛认为是一个坏主意(因为它实际上并不安全,原因很多)并且magic_quotes
已被删除。因此,您现在通常不需要stripslashes()
用户输入。 (您是否真的需要依赖于PHP版本和ini设置。)
(请注意,您仍然需要正确转义进入数据库的任何内容,但最好使用参数化查询或特定于数据库的转义函数来完成,这两个函数都超出了本问题的范围。)
答案 1 :(得分:0)
这取决于你的目标:
html
表单获取用户的数据 - 您应该这样做
绝对适用strip_tags(trim($_POST['name']))
方法
消除可能不安全和过多的数据。