当前位置: 首页 > 面试题库 >

这两个功能是否对杀菌消毒过度?

侯善
2023-03-14
问题内容
function sanitizeString($var)
{
    $var = stripslashes($var);
    $var = htmlentities($var);
    $var = strip_tags($var);
    return $var;
}

function sanitizeMySQL($var)
{
    $var = mysql_real_escape_string($var);
    $var = sanitizeString($var);
    return $var;
}

我从书中获得了这两个函数,作者说通过使用这两个函数,我可以更加安全地抵御XSS(第一个函数)和sql注入(第二个函子)。这些都是必要的吗?

同样为了进行清理,我使用准备好的语句来防止sql注入。

我会这样使用它:

$variable = sanitizeString($_POST['user_input']);
$variable = sanitizeMySQL($_POST['user_input']);

编辑: 摆脱第一个功能的strip_tags,因为它不执行任何操作。使用这两个功能是否足以防止大多数攻击并可以在公共站点使用?


问题答案:

的确如此,但是这种逃避级别可能并不适合所有情况。如果要将HTML存储在数据库中怎么办?

最佳实践表明,显示值时应转义它们,而不是逃避接收值。这样,您就可以考虑同时显示数据库中的HTML和数据库中的非HTML,无论如何,这实际上就是逻辑上属于这种代码的地方。

清理传出HTML的另一个好处是,可能会发现一个新的攻击媒介,在这种情况下,清理传入HTML不会对数据库中已有的值做任何事情,而传出清理将追溯应用,而无需执行任何特殊操作

另外,请注意strip_tags,如果所有<>都变为&lt;和,则在您的第一个函数中可能无效&gt;



 类似资料:
  • 我在创建Azure函数时注意到,一个函数App可以有多个函数。 有人能给我解释一下这背后的原理吗? 我的猜测 - 由于函数应用决定了托管(应用服务计划或消耗计划),因此你可以在应用服务计划上有一个函数应用,然后在该函数应用内有多个函数共享同一应用服务计划。 但这在消费计划中没有意义,因为如果你有一个具有“消费”计划的功能应用程序,其中包含2个功能,这与将两个功能拆分为具有消费计划的2个功能应用程序

  • 问题内容: 和 第二个代码产生了一个空指针异常,该怎么做才能使下一个等效? 问题答案: 我可以看到,如果players某个自定义java.lang.Iterable的get()实现的实现被破坏,或者至少以一种异常的方式(与的行为不同),就会发生这种情况。 除此之外,我唯一能想到的就是您未在代码中向我们展示的某些内容导致了某些错误。 如果执行此操作会怎样?

  • 我们最近在大学里做了一个关于几种语言的编程专题的讲座。 讲师写下了以下功能: 虽然我完全理解就可读性而言这也是非常糟糕的风格,但他的主要观点是,这部分代码在生产代码中工作得很好,直到它们实现了高优化级别。然后,代码将什么也不做。 他说所有对变量< code>tmp的赋值都会被编译器优化掉。但是为什么会这样呢? 我知道在某些情况下,变量需要声明为易失性,以便编译器不会触及它们,即使他认为它们从未被读

  • 问题内容: 我的问题是: 据我所知,这取决于如何使用,即用作构造函数或函数。可什么是在不同的情况下? 问题答案: 的关键字是指功能所属的对象,或对象如果函数不属于任何对象。 在OOP代码中使用它来引用该函数所属的类/对象,例如: 这提醒: 您可以使用或函数操纵引用的对象。 (有时非常方便)

  • 问题内容: 我正在为我的android应用程序寻找一个好的ORM,乍一看,对于移动设备而言,我似乎希望使用更简单的方法。问题是我只是在这里假设没有任何真实的证据,所以我想我会问社区的意见(也许有人经历过这种经历)。这是一个相当大的(对于移动设备)应用程序,将在专用平板电脑上运行。 其他人怎么想?对于Android应用程序来说,Hibernate太多了吗?会有性能问题吗? 如果您认为过多,会使用什么