我想以安全模式将数据发布到数据库中。 例如,如果我想将此标题添加到数据库:
$title = " here is title 'here is title' here is title ";
注意它有撇号。
我使用此函数使字符串安全:
function stringsafe($string)
{
$string = strip_tags(trim(addslashes($string)));
return $string;
}
正如您所看到的那样,它会在撇号之前添加斜线以使其安全。
当我通过stripslashes
显示数据时,我尝试删除斜杠,它正在运行,但它有一些问题。无论如何将数据发布到数据库中?
答案 0 :(得分:2)
另一方面,事实上一般的经验法则是,你根本不应该改变用户输入。您应该将任何用户输入原样存储到数据库中,以便您可以保留用户输入尽可能原始,并且只在需要显示或使用它时将其转义。
在你的情况下,是的,你是对的,你必须防止它被注入,但你通过在原始输入中添加斜杠来改变原始输入,这不是很受欢迎。如果我的标题包含类似<My 21st Birthday Party!>
的字符串并将其剥离,该怎么办?
尝试使用Prepared Statements,这样您就可以将任何数据插入数据库,而无需担心注入。只有当您需要在HTML页面或控制台上显示数据时,才会相应地转义它们,例如htmlentities
。