我知道htmlentities()和strip_tags()以及htmlspecialchars()和MysqL_real_escape_string(),甚至javascript的escape()但我不知道使用哪个和哪里.
处理这三种不同类型输入的最安全方法是什么(通过进程,我的意思是获取,保存在数据库中,并显示):
htmlspecialchars()
:它将转义< ;,>,“,’和& – 取决于您提供的选项.
如果用户输入了一些标签,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保存在两个单独的字段中 – 可能对于允许人们编辑帖子有用吗?)
这些只是一些指示……希望他们帮助你:-)不要犹豫,问你是否有更准确的问题!
原文地址:https://www.jb51.cc/php/135166.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。