首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql_real_escape_string足以防止超文本标记语言注入吗?

mysql_real_escape_string足以防止超文本标记语言注入吗?
EN

Stack Overflow用户
提问于 2011-07-30 21:12:58
回答 4查看 2.8K关注 0票数 0

我想知道如何防止HTML注入。我已经创建了一个网站,允许用户将文章粘贴到HTML表单中。我使用过mysql_real_escape_sting,但我想知道这是否足以防止HTML注入。我尝试了htmlspecialchars,但在mysql_real_escape_string上显示错误。

EN

回答 4

Stack Overflow用户

发布于 2011-07-30 21:16:10

您应该绝对确保使用prepared statements来防止sql注入。

摘自文档(请阅读粗体部分)

许多比较成熟的数据库都支持预准备语句的概念。他们是什么?它们可以被认为是应用程序想要运行的SQL的一种编译模板,可以使用变量参数进行自定义。准备好的语句提供了两个主要好处:

  • 查询只需要解析(或准备)一次,但可以使用相同或不同的参数执行多次。当准备好查询时,数据库将分析、编译和优化其执行查询的计划。对于复杂的查询,如果需要多次使用不同的参数重复相同的查询,此过程可能会占用足够的时间,从而显著降低应用程序的运行速度。通过使用准备好的语句,应用程序可以避免重复分析/编译/优化循环。这意味着预准备语句使用的资源更少,因此运行速度更快。
  • 预准备语句的参数不需要加引号;驱动程序会自动处理这一点。如果应用程序以独占方式使用已准备好的语句,则开发人员可以确保不会发生注入(但是,如果查询的其他部分是用未转义的输入构建的,则仍然可以进行SQL注入)。

准备好的语句非常有用,以至于它们是PDO为不支持它们的驱动程序模拟的唯一特性。这确保了无论数据库的功能如何,应用程序都能够使用相同的数据访问范例。

如果您想要阻止XSS (跨站点脚本),那么当您想要向浏览器输出来自用户输入或来自任何不安全来源的内容时,都应该使用函数htmlspecialchars()始终将任何未知源视为不安全的

代码语言:javascript
复制
 echo htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
票数 3
EN

Stack Overflow用户

发布于 2011-07-30 21:32:18

不,mysql_real_escape_sting只准备安全地插入到MySQL字符串声明中的数据,以防止在该特定上下文中的SQL注入。它不会阻止其他注入,如HTML注入或跨站点脚本(XSS)。

HTML注入和XSS都发生在不同的上下文中,其中有不同的上下文特殊字符需要处理。在超文本标记语言中,尤其是<>&"'分隔不同的超文本标记语言上下文。考虑到JavaScript,您还需要了解不同的XSS上下文及其特殊字符。

htmlspecialchars应足以应对前一种攻击,而json_encode可用于JavaScript的安全子集。有关此主题的详细信息,另请参阅XSS (Cross Site Scripting) Prevention Cheat Sheet以及my answer to 和相关问题。

票数 3
EN

Stack Overflow用户

发布于 2011-07-30 21:48:30

不是的。事实上,我认为对于高级程序员来说,您不应该使用mysql_real_escape_string()作为拐杖。

对于数据库查询中需要使用的每个值,请认真考虑可能出现的字符。如果是美元金额,则应接受的字符只有数字、句点和前面可能的美元符号。如果它是一个名字,你应该只允许字母,一个连字符,可能还有一个句号(对于像Joseph A. Bank这样的全名)。

一旦确定了一个值可以接受的严格字符范围,就可以编写一个正则表达式来匹配该值。对于任何不匹配的值,显示一个假错误,并将该值连同用户的IP一起记录在一个文本文件中(读取:而不是db)。经常检查此文件,以便您可以查看用户尝试的值是否为黑客尝试。这不仅会发现您需要调整Regex的有效输入,而且还会揭示试图在您的站点上发现SQL漏洞的黑客的IP地址。这种方法确保了mysql_real_escape_string()可能无法立即解决的新旧SQL漏洞将被阻止。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6883310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档