htmlspecialchars和mysqli_real_escape_string之间的区别?

时间:2011-12-07 16:45:43

标签: php mysql

我在PHP书中读到,当我们处理用户输入的数据时,在条件中使用htmlspecialcharsmysqli_real_escape_string是一个好习惯。这两者之间的主要区别是什么,它们适合使用?请指导我。

5 个答案:

答案 0 :(得分:8)

htmlspecialchars:“<”到“& lt;” (取代HTML代码)

mysqli_real_escape_string:“到\” (取代代码,在mysql查询中有意义)

两者都习惯于防止像SQL-Injection和XSS这样的攻击

答案 1 :(得分:6)

这两个功能用于完全不同的事情。

htmlspecialchars()将特殊HTML字符转换为实体,以便可以毫无问题地输出它们。 mysql_real_escape_string()可以转义敏感的SQL字符,因此可以执行动态查询而不会有SQL注入的风险。

你可以很容易地说htmlspecialchars处理敏感的OUTPUT,而mysql_real_escape_string处理敏感的INPUT。

答案 2 :(得分:4)

这两个功能的目的完全无关;他们共享的唯一属性是它们通常用于为Web应用程序提供安全性。

mysqli_real_escape_string旨在提供针对SQL injection的安全保护。

htmlspecialchars旨在提供跨站点脚本(XSS)的安全性。

另见What's the best method for sanitizing user input with PHP?Do htmlspecialchars and mysql_real_escape_string keep my PHP code safe from injection?

答案 3 :(得分:2)

htmlspecialcharacters将“html特殊字符”转换为代码,例如引号(单引号和双引号),&符号以及小于/大于符号。此功能通常用于确保在您的网站上发布的内容用户没有HTML标记或XSS脚本。

mysql_real_escape_string转义字符串,这意味着它会在斜杠,引号(单引号和双引号)以及其他任何可能搞乱mysql查询的地方添加\。此函数确保没有人在您的服务器上执行SQL命令并从数据库中获取信息。

答案 4 :(得分:1)

我是否可以添加真正高级的PHP Web程序员,现在不再需要手动进行用户输入验证,因为它容易出现可能的谬误,但通常选择像CakePHP或CodeIgniter这样的PHP框架进行用户输入验证和只需几行代码即可完成更多工作?