php – 在论坛中逃避输入的正确/最安全的方法是什么?

前端之家收集整理的这篇文章主要介绍了php – 在论坛中逃避输入的正确/最安全的方法是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用PHPmysql后端创建一个论坛软件,并想知道什么是最安全的方式来逃避论坛帖子的用户输入.

我知道htmlentities()和strip_tags()以及htmlspecialchars()和MysqL_real_escape_string(),甚至javascript的escape()但我不知道使用哪个和哪里.

处理这三种不同类型输入的最安全方法是什么(通过进程,我的意思是获取,保存在数据库中,并显示):

>帖子的标题(也将是URL永久链接的基础).
>论坛帖子的内容仅限于基本文本输入.
>允许html的论坛帖子的内容.

我希望得到一个答案,告诉我有多少这些逃逸功能需要组合使用以及为什么.
谢谢!

生成HTLM输出时(就像你正在尝试编辑帖子时将数据输入到表单的字段中,或者如果你需要重新显示表单,因为用户忘记了一个字段),你就会可能使用 htmlspecialchars():它将转义&lt ;,>,“,’和& – 取决于您提供的选项.

如果用户输入了一些标签,strip_tags将删除标签 – 而且您通常不希望用户键入的内容只是消失;-)
至少,不是“内容”字段:-)

一旦您获得了用户在表单中输入的内容(即表单已提交),您需要在将其发送到数据库之前将其转义.
这就是MysqLi_real_escape_string之类的函数变得有用的地方:它们为sql转义数据

您可能还想查看准备好的语句,这可能对您有所帮助;-)
with mysqli – 和with PDO

你不应该使用像addslashes这样的东西:它的转义不依赖于数据库引擎;使用适合您正在使用的引擎(MysqL,PostGresql,…)的函数更好/更安全:它将准确知道要逃脱的内容以及如何逃脱.

最后,要在页面显示数据:

>对于不能包含HTML的字段,您应该使用htmlspecialchars():如果用户输入了HTML标记,那些将按原样显示,而不是作为HTML注入.
>对于可以包含HTML的字段……这有点棘手:你可能只想要允许一些标签,而strip_tags(可以做到这一点)并不是真正取决于任务(它会让允许的属性)标签)

>您可能想看看一个名为HTMLPUrifier的工具:它将允许您指定应该允许哪些标记属性 – 并且它生成有效的HTML,这总是很好^^
>这可能需要一些时间来计算,并且您可能不希望每次都必须重新生成该HTML;所以你可以考虑将它存储在数据库中(或者只保留干净的HTML,或者将它和非干净的HTML保存在两个单独的字段中 – 可能对于允许人们编辑帖子有用吗?)

这些只是一些指示……希望他们帮助你:-)不要犹豫,问你是否有更准确的问题!

猜你在找的PHP相关文章