【问题标题】:SQL Injection Prevention MethodSQL注入预防方法
【发布时间】:2017-12-17 06:27:12
【问题描述】:

如果我在 sql 语句周围加上解释,即

explain ( [arbitrary sql string] )

我应该能够阻止create、drop、truncate、delete 命令的注入正确吗?

我只在 postgres 上试过这个,它似乎工作,但我不知道是否有我忘记的极端情况。

【问题讨论】:

标签: sql postgresql security sql-injection


【解决方案1】:

不。它行不通。你仍然可以得到这样的结果:

Explain( select columns from table where value = '');injected sql here --)

你所做的只是让攻击者做一点额外的工作,以找出除了通常的单引号之外,他们还需要) 字符。

如果您想防止 Sql 注入,请确保您始终使用参数化查询。

【讨论】:

  • 给出问题的上下文。有没有办法让我根据模式验证任意 SQL 而不会受到注入的影响
  • @EricYang,你永远不应该从不受信任的来源执行未经审查的任意 SQL。
【解决方案2】:

你一般需要:

1/ 使用白名单方法验证您需要的数据。不要将字符或其他东西列入黑名单

2/ 使用参数化查询

3/ 任何时候都不要使用动态查询

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 2012-12-21
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多