chr*_*ris 7 javascript php mysql security
我正在使用php和mysql后端创建一个论坛软件,并想知道什么是最安全的方式来逃避论坛帖子的用户输入.
我知道htmlentities()和strip_tags()和htmlspecialchars()和mysql_real_escape_string(),甚至javascript的escape(),但我不知道使用哪个和哪里.
处理这三种不同类型输入的最安全的方法是什么(通过进程,我的意思是获取,保存在数据库中,并显示):
我希望得到一个答案,告诉我有多少这些逃逸功能需要组合使用以及为什么.谢谢!
当生成HTLM输出时(就像你正在尝试编辑帖子时将数据输入到表单的字段中,或者如果你需要重新显示表单,因为用户忘记了一个字段),你就会可能使用htmlspecialchars():它会逃跑<,>,",',和&-取决于你给它的选项.
strip_tags如果用户输入了一些标签,则会删除标签 - 而且您通常不希望用户键入的内容只是消失;-)
至少,不是"内容"字段:-)
一旦您获得了用户在表单中输入的内容(即表单已提交),您需要在将其发送到数据库之前将其转义.
这就是函数mysqli_real_escape_string变得有用的地方:它们逃避SQL的数据
您可能还想查看准备好的语句,这可能对您有所帮助;-)
使用mysqli - 以及使用PDO
你不应该使用以下任何东西addslashes:它的转义不依赖于数据库引擎; 使用适合您正在使用的引擎(MySQL,PostGreSQL,...)的函数更好/更安全:它将准确知道要逃脱的内容以及如何逃脱.
最后,要在页面内显示数据:
htmlspecialchars():如果用户输入了HTML标记,那么它们将按原样显示,而不是作为HTML注入.strip_tags(可以做到这一点)并不真正取决于任务(它将允许允许标签的属性)
这些只是一些指示......希望他们帮助你:-)
不要犹豫,问你是否有更准确的问题!