什么是安全方便地清理用户输入和输出的真正方法

时间:2011-09-19 17:24:45

标签: php

首先要考虑安全性,对吧?我认为这个问题非常重要,以前有人应该问过,但我在搜索结果中找不到令人满意的答案。

我需要将用户的文章内容存储在数据库中并安全输出。但是有很多方法可以做到这一点。我可以使用filter_var()strip_tags()mysql_real_escape_string()stripslashes()等来执行此操作。我不能选择一个使用,我无法确认是否足够安全使用其中一个。

清理输入和输出的最佳做法是什么?

2 个答案:

答案 0 :(得分:11)

简单:不要过滤输入。逃避输出。

也请参阅此答案:PHP escaping input variables

答案 1 :(得分:2)

用非常简单的术语“输出上下文的转义/编码”。这就是它的全部内容。

当你想在mysql中存储东西时,你正在制作一个mysql语句。上下文:mysql语句。使用为您执行此操作的预准备语句,或使用PDO适配器实例引用数据,或使用mysql_real_escape_string(作为最后手段),对mysql语句进行编码/转义。

当您想要在HTML页面中输出内容时,Context:html数据。使用htmlspecialchars对HTML进行编码,但要注意htmlspecialchars对于html属性来说还不够,因为空格也需要在此上下文中进行编码,两种类型的引号也是如此。

请记住,css和javascript是他们自己的上下文 - 不要将它们视为HTML。