安全字符串输出

发布于 2024-12-08 23:44:22 字数 446 浏览 0 评论 0原文

我得到了

$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};");

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

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

I got

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

The above, is making my $content string secured, when I post it to the database:

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

But at the same, is does remove some special characters like tags, for example I can not use < in my post , because it'll be removed.

How can I modify that, to be secured enough and at the same prevent my code from hack?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

溇涏 2024-12-15 23:44:22

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

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

Escaping is the process of allowing certain characters that could have detrimental effects on the target system. For example, MySQL uses characters like quotes and parentheses. mysql_real_escape_string escapes such characters so they don’t pollute the queries.

You don’t necessarily need to sanitize HTML from data before storing it in the database, but you MUST escape harmful characters. As @Damien pointed out in a comment, you can escape HTML (which could have detrimental effects on your HTML) before output .

_畞蕅 2024-12-15 23:44:22

只需使用 real_escape_string() 就已经足够安全了 ^_ ^

Just use real_escape_string() and already must good and secure ^_^

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文