如何逃脱的Python博托的SelectExpression亚马逊的SimpleDB

问题描述:

目前我的代码是如何逃脱的Python博托的SelectExpression亚马逊的SimpleDB

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

变量keyvalue由用户输入的,什么是最好的逃离他们在我上面的代码方式吗?

编辑:我关心的是如何逃脱的领域,如我们过去那样,以防止SQL注入,但是现在的SimpleDB

+0

什么是预期结果查询? – helloV

+1

您是否提前看到http://*.com/a/4451119/2740386? –

如果你的意思是SQL注入的sideffect是删除/销毁,SimpleDB的唯一支持查询数据,如果你要保护的数据暴露(即你不想)检查AWS文档here

注:由于引导是好走,我想copy pasting从链接虽然

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

Amazon提供的引用规则: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)