【问题标题】:Should I care about sql injection after user has been authenticated?用户通过身份验证后,我应该关心 sql 注入吗?
【发布时间】:2022-01-04 11:57:19
【问题描述】:

检查来自经过身份验证的用户的恶意 SQL 输入是否有意义?

【问题讨论】:

  • 账户可能被黑等
  • 你为什么要讨价还价?有两组查询有什么意义?以相同(受保护)的方式处理所有查询不是更简单吗?
  • 什么是恶意SQL输入?如果您有 SQL 注入错误,是否任何输入都可能是恶意的?

标签: sql salesforce sql-injection soql


【解决方案1】:

如果此类查询不对字段/对象强制执行安全检查,则经过身份验证的用户可以注入绕过其安全设置的查询。 此外,如果一个类被定义为不共享,则在查询中添加一个简单的 where 子句(例如 OR id != null)可以获取他不应访问的记录,例如他同事的薪水报表!!

因此,总而言之,所有查询都必须检查是否存在 sql 注入。

【讨论】:

    【解决方案2】:

    很多 SQL 注入漏洞不是恶意攻击,不会造成破坏。它们只会导致不必要的错误,让您的用户感到困惑并破坏您的应用程序的功能。

    SELECT * FROM Users WHERE last_name = 'O'Reilly'
                                            ^ mismatched quote
    

    为什么您会编写代码来避免 SQL 注入?

    【讨论】:

    • 好问题。感谢您提出它,我很想就此获得意见和澄清。我正在一个需要凭据才能运行的 Web 应用程序中工作。从我幼稚的角度来看,我认为执行 2 因素身份验证和用户授权应该足以信任用户。如果此时用户尝试恶意攻击,我认为我的公司在人力资源办公室内有更大的问题需要解决。打个比方,我会说,一旦我让一个人进入我的房子,我就有足够的信任度,不会把我的电视锁在墙上。有意义吗?
    • 用户名其实是O'Reilly是不是恶意的?
    • 对,防止这些错误的解决方案与我们推荐的防止SQL注入漏洞的解决方案相同:使用查询参数。
    • 用户不一定是罪犯,但您应该指望他们对您的网站采取行动,就好像他们是罪犯一样。他们将输入您从未想过任何合理的人会输入的输入。他们会用请求淹没您的网站。您需要编写代码来限制他们可以执行的操作,并确保网站能够优雅地处理它。
    • 但是,是的,一些用户可能是罪犯。人们会假装他们需要一个合法的帐户,然后利用他们的访问权限做非法的事情。很抱歉破坏了你的纯真,但你需要在设计软件时考虑到这一点。
    猜你喜欢
    • 2013-09-07
    • 2020-11-30
    • 1970-01-01
    • 2023-03-19
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多