我得到了
$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};");
但同时,确实删除了一些特殊字符,例如标签,例如我在帖子中无法使用<
,因为它会被删除。
如何修改它,保证足够安全,同时防止我的代码被黑客攻击?
答案 0 :(得分:1)
转义是允许某些字符可能对目标系统产生不利影响的过程。例如,MySQL使用引号和括号等字符。 mysql_real_escape_string会逃避此类字符,因此不会污染查询。
在将数据存储到数据库之前,您不一定需要从数据中清理HTML,但是您必须逃避有害字符。正如@Damien在评论中指出的那样,您可以在输出之前转义HTML(可能对您的HTML 产生不利影响)。
答案 1 :(得分:0)
只需使用real_escape_string(),并且必须良好且安全^ _ ^