安全字符串输出

时间:2011-10-08 18:21:26

标签: php security post filtering

我得到了

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

上面的内容是,当我将$ content内容字符串发送到数据库时,我的内容字符串是安全的:

$conn->new->query("UPDATE `posts` SET `content` = " . $conn->escape_string($content) . " where `id` = {$id};");

但同时,确实删除了一些特殊字符,例如标签,例如我在帖子中无法使用<,因为它会被删除。

如何修改它,保证足够安全,同时防止我的代码被黑客攻击?

2 个答案:

答案 0 :(得分:1)

转义是允许某些字符可能对目标系统产生不利影响的过程。例如,MySQL使用引号和括号等字符。 mysql_real_escape_string会逃避此类字符,因此不会污染查询。

在将数据存储到数据库之前,您不一定需要从数据中清理HTML,但是您必须逃避有害字符。正如@Damien在评论中指出的那样,您可以在输出之前转义HTML(可能对您的HTML 产生不利影响)。

答案 1 :(得分:0)

只需使用real_escape_string(),并且必须良好且安全^ _ ^