19-2: Defend Against SOQL Injection

DEX450 - Introductions and Overview

📄 第 512 页 🎬 视频课程

课程章节介绍

同学们,今天我们要学习如何防御SOQL注入攻击。SOQL注入是一种安全漏洞,攻击者可以通过输入恶意数据来操纵你的SOQL查询,从而访问或修改不应该被访问的数据。为了防止这种情况,我们需要对代码进行“消毒”,也就是确保用户输入的数据不会直接影响到我们的查询。 首先,我们需要创建一个自定义的Visualforce控制器。这个控制器将负责处理页面的逻辑和数据。然后,我们会创建一个Visualforce页面,这个页面将使用我们刚刚创建的控制器来显示数据。 接下来,我们要实现一个功能,让用户可以通过输入认证编号来搜索现有的认证记录。当用户输入一个认证编号并提交后,页面会显示该认证的详细信息,包括认证名称和相关的专业人员名称,同时还会显示拥有该认证的专业人员总数。 现在,关键的部分来了——防御SOQL注入。在原始的代码中,可能会使用动态SOQL查询,这意味着查询字符串是直接由用户输入的数据拼接而成的。这种做法非常危险,因为如果用户输入了恶意数据,就可能引发SOQL注入。 为了防御这种攻击,我们需要将动态查询替换为静态查询,并使用绑定变量。绑定变量是SOQL查询中的占位符,它们会在查询执行时被安全地替换为用户输入的数据。这样做的好处是,即使用户输入了恶意数据,这些数据也不会被解释为SOQL代码的一部分,从而防止了注入攻击。 具体来说,我们需要修改Visualforce页面的控制器代码。在控制器中,我们会定义一个静态的SOQL查询,并使用绑定变量来引用用户输入的认证编号。这样,无论用户输入什么,查询都会安全地执行,不会受到注入攻击的影响。 好了,这就是我们今天要学习的内容。记住,防御SOQL注入的关键是使用静态查询和绑定变量,确保用户输入的数据不会直接影响到我们的查询。现在,轮到你动手实践了,试着修改你的Visualforce页面控制器,确保它能够防御SOQL注入攻击。加油!