首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mysql准备的语句& html净化器耦合概念

mysql准备的语句& html净化器耦合概念
EN

Stack Overflow用户
提问于 2013-02-20 09:12:01
回答 4查看 472关注 0票数 2

我是在原型阶段与我的网站。在我在这个网站上问了this问题之后,经过额外的阅读,我决定使用mysql prepared statements

用我的新思维方式,我想确保我正确地理解了这些事情,所以我的两个问题是:

  1. 如果在将不受信任的数据插入mysql期间使用已准备好的语句,则不需要使用。我说的对吗?
  2. 如果我在从mysql db获取和显示数据作为html屏幕时使用准备好的语句,(出于安全考虑)最好使用html净化器类,所以我应该使用html净化器类。我说的对吗? 你能用我的思维方式引导我吗?我的方法有意义吗?

谢谢你,比尔

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-20 09:19:46

如果在不受信任的数据插入到mysql期间使用预先准备的语句,则不需要使用mysqli_real_escape_string函数。我说的对吗?

你明白重点了。准备好的语句有自己的逃逸过程。

如果我使用准备好的语句,同时从mysql db获取和显示数据作为html屏幕,(出于安全考虑)最好使用html净化器类,所以我应该使用html净化器类。我说的对吗?

你也是对的。当您打印html时,您必须确保它是安全的,因此它们是两种解决方案:一种是激进的解决方案:一种是用htmlspecialchars逃避每一件事,另一种是允许安全的html标记的软解决方案:使用htmlpurifier

我还想让你向你介绍一条规则,它将给你带来一个安全和更舒适的网站:过滤器在逸出。

准备语句和htmlpurifier是为了“逃出”的,这意味着您将以输出可以理解的方式发送数据。

规则的一部分中的过滤器让您研究用户输入的内容。一个很好的例子是日期格式。也许你想让他们用英语输入一个Y-m格式的日期。如果他们没有,你的网站将无法工作,所以你必须要求他们再次输入的日期正确的方式。关于过滤,有一种方法需要记住:filter_var

票数 1
EN

Stack Overflow用户

发布于 2013-02-20 09:16:47

是的,确实如此。

无论如何,mysqli_real_escape_string函数与任何保护都无关。

html净化器是一件好事,但你可以用懒惰的htmlspecialchars()函数调用来代替它,如果用户输入中没有HTML。

关于准备好的语句,唯一要提到的是:它们只涉及基本的标量值,对于复杂的值(如标识符(表和字段名)或数组)无能为力。

票数 1
EN

Stack Overflow用户

发布于 2013-02-20 09:20:19

如果在不受信任的数据插入到mysql期间使用预先准备的语句,则不需要使用mysqli_real_escape_string函数。我说的对吗?

对,是这样

如果我使用准备好的语句,同时从mysql db获取和显示数据作为html屏幕,(出于安全考虑)最好使用html净化器类,所以我应该使用html净化器类。我说的对吗?

使用准备好的语句将保护数据库免受SQL注入的影响。它对XSS攻击没有任何作用。你需要一些防御措施。

由于“保护数据库”和“保护HTML”是完全不同的问题,解决方案的选择与另一种方案的选择无关。

使用基于白名单的过滤器构建在一个真正的HTML解析器(我假设HTML净化器就是其中之一)是一个明智的选择(如果你想要允许一些HTML)。

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

https://stackoverflow.com/questions/14976022

复制
相关文章

相似问题

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