gpt4 book ai didi

php - 评论表单的验证

转载 作者:行者123 更新时间:2023-12-04 05:35:43 25 4
gpt4 key购买 nike

我正在 Codeigniter 中开发一个评论系统,希望能得到一些关于我应该使用什么样的验证规则的建议。我不想允许任何图像或其他任何 HTML。

到目前为止,我只有 trimmax_length设置。我也通过 htmlspecialchars 运行内容在我插入数据库之前。我在全局启用了 XSS 过滤。

我还应该采取哪些其他预防措施? htmlspecialchars 是否足以防止输入 Javascript 或其他恶意代码?

最佳答案

您可能应该定期做一次 form validation在将内容推送到数据库之前,需要和 max_length 以及显然 xss 过滤。 htmlspecialchars 应该只应用于不在标签中的字符,所以你不能直接做 htmlspecialchars。你需要:

1 - 剥离标签元素(并存储它们),如“<br/>”或“<b>”,但不是它们的内容,这意味着“<b>”和“</b>”中没有任何内容。您可能可以使用 preg_match 来做到这一点。 .

2 - 对所有剩余文本执行 htmlentities

3 - 删除所有不需要的显式标签(从存储的标签堆中)

strip_tags ( string $str [, string $allowable_tags ] )

4 - 然后过滤属性和内容的允许标签。黑客使用类似的代码并不少见
<b onMouseOver="window.open(..)"></b>

要解决此问题,您要么必须做一些额外的工作,并且可能会使用一些正则表达式。如果您希望我编写更多示例代码,请告诉我。

6 - 将标签元素重新添加回文档。

我现在基本上就是把这个煮熟了。该算法可以提高效率(即首先去除不需要的标签,然后继续过滤 html 实体和标签内容),但我会留给你。

这就是我现在可以看到的潜在黑客攻击。不过,可能还有其他方法可以破解您的输入,因此您可能需要检查其他评论框系统用于验证的方法,例如 phpbb forum system .另一种选择可能是使用 phpbb 方括号格式来处理标签,这样您就不会让用户输入任何 html 标签,而是使用您控制的方括号标签。

这是否回答了您的问题?

关于php - 评论表单的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11974703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com