2011-09-19 38 views
4

安全性应始终是首先要考虑的事,对吧?我认为这个问题非常重要,以至于以前有人应该问过这个问题,但在搜索结果中我没有找到令人满意的答案。安全方便地对用户输入和输出进行安全消毒的真正方法是什么

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

消毒输入和输出的最佳做法是什么?

+4

如果您仔细考虑,总会有一种正确的方式来转义数据。不过,之前已经有很多次被问及(并回答过)了。这是[我自己的答案之一](http://stackoverflow.com/questions/6475225/how-to-cleanse-a-string-to-avoid-sql-injection-and-the-most-common-types-of -attac/6475262#6475262)。 –

+0

“相关”部分有很多重复项 –

回答

2

简单来说 “为输出上下文逃生/编码”。这里的所有都是它的。

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

当你想输出的东西在HTML页面中,上下文:HTML数据。使用htmlspecialchars对HTML进行编码,但要注意htmlspecialchars对于HTML属性并不是足够的,因为空间也需要在此上下文中进行编码,就像两种引号一样。

请记住,CSS和JavaScript是他们自己的上下文 - 不要像对待HTML。