2016-11-23 147 views
4

目前我的代碼是如何逃脫的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://stackoverflow.com/a/4451119/2740386? –

回答

2

如果你的意思是SQL注入的sideffect是刪除/銷燬,SimpleDB的唯一支持查詢數據,如果你要保護的數據暴露(即你不想)檢查AWS文檔here

注:由於引導是好走,我想copy pasting從鏈接雖然

3

子選擇和破壞性操作不能使用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) 
相關問題