Php 安全字符串输出

Php 安全字符串输出,php,security,post,filtering,Php,Security,Post,Filtering,我得到 当我将$content字符串发布到数据库时,上面的代码正在保护它: $id = (int) $_POST['id'] $content = filter_input(INPUT_POST, 'post_content', FILTER_SANITIZE_STRING); 但同时,is确实删除了一些特殊字符,如标记,例如,我不能使用仅使用(),并且已经必须良好且安全^ ^转义是允许某些字符对目标系统产生有害影响的过程。例如,MySQL使用引号和括号等字符。转义这些字符,这样它们就不会污染

我得到

当我将$content字符串发布到数据库时,上面的代码正在保护它:

$id = (int) $_POST['id']
$content = filter_input(INPUT_POST, 'post_content', FILTER_SANITIZE_STRING);

但同时,is确实删除了一些特殊字符,如标记,例如,我不能使用
仅使用(),并且已经必须良好且安全^ ^

转义是允许某些字符对目标系统产生有害影响的过程。例如,MySQL使用引号和括号等字符。转义这些字符,这样它们就不会污染查询


在将数据存储到数据库中之前,您不一定需要清除数据中的HTML,但必须避开有害字符。正如@Damien在一篇评论中指出的那样,你可以在输出之前避开HTML(这可能会对你的HTML产生有害影响)。

FILTER\u SANITIZE\u STRING
strip\u标签
htmlspecialchars
的组合。你必须决定你想要/保留什么。如果允许使用标签,那么就使用一个真正的过滤器,比如HTMLPurifier。我使用的是:
$conn->escape\u string
这与
real\u escape\u string
相同,所以你说这足够安全了?不需要逃避特殊角色?@Rym“逃避”在很大程度上取决于目标媒体。如果要在插入数据库之前转义,请使用m_r_e_s作为建议,或使用执行相同操作的db函数。如果想要转义HTML,则需要在输出到页面之前转义。使用htmlspecialchars()
htmlspecialchars()
?在更新/向数据库插入字符串之前,我应该使用
escape\u string
,当我不想在页面上显示它时,我应该使用
htmlspecialchars()
HTMLSpecialitys()
?m\u e\u s是缩写,那么我如何在查询之前转义这些“有害”字符呢?当我从数据库中读取数据时,我使用
htmlspecialchars()
显示该数据。或者更好的是,使用PDO与数据库交互。PDO解释得很好。我正在使用PDO,
$conn->escape\u string($content)
$sql->quote
。啊!我懂了。那你就准备好了。您不需要使用
filter\u input()
。在使用数据之前,只需使用
htmlspecialchars()
$conn->new->query("UPDATE `posts` SET `content` = " . $conn->escape_string($content) . " where `id` = {$id};");