【问题标题】:How to escape Python boto's SelectExpression for Amazon SimpleDB如何为 Amazon SimpleDB 转义 Python boto 的 SelectExpression
【发布时间】:2019-11-11 14:53:51
【问题描述】:

目前我的代码是

client = boto3.client('sdb')
query = 'SELECT * FROM `%s` WHERE "%s" = "%s"' % (domain, key, value)
response = client.select(SelectExpression = query)

变量keyvalue 是用户输入的,在我上面的代码中转义它们的最佳方法是什么?

编辑:我关心的是如何像过去那样逃避字段以防止 SQL 注入,但现在在 SimpleDB 中

【问题讨论】:

标签: python python-2.7 boto boto3 amazon-simpledb


【解决方案1】:

不能使用 simpledb 执行子选择和破坏性操作。

亚马逊提供报价规则:http://docs.aws.amazon.com/AmazonSimpleDB/latest/DeveloperGuide/QuotingRulesSelect.html

您可以使用此函数在 python 中应用此行为:

def quote(string):
    return string.replace("'", "''").replace('"', '""').replace('`', '``')

client = boto3.client('sdb')
query = 'SELECT * FROM `%s` WHERE "%s" = "%s"' % (quote(domain), quote(key), quote(value))
response = client.select(SelectExpression = query)

【讨论】:

    【解决方案2】:

    如果您的意思是 SQL 注入的sideffect 是删除/破坏,SimpleDB 仅支持查询数据,如果您想保护数据暴露(您不想)查看 aws docs here

    注意:由于指南很好,我认为链接就足够了

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-20
      • 1970-01-01
      • 2010-10-13
      • 2014-09-23
      • 2012-11-06
      相关资源
      最近更新 更多