[英]Preventing Redshift SQL Injection
我有一種不幸的情況,我必須通過串聯字符串來構建SQL字符串-經典的SQL注入方案。 我不能使用准備好的陳述。
如果我逃脫了'
字符,我安全嗎? 還是還有其他攻擊媒介?
我使用的是MyBatis,它是${}
表示法(與#{}
,它會生成准備好的語句)。 我對此別無選擇 -必須是${}
。 我不能使用准備好的陳述。
編輯:
增加一點清晰度; 這是ASW Redshift UNLOAD命令 。 UNLOAD的第一個參數是SQL字符串。
PreparedStatement
( Wikipedia )確實是要走的路。 一口氣,您就消除了SQL注入黑客的大量工作和風險。
如果您絕對不能/不會使用PreparedStatement
,那么您需要閱讀各種策略。 您必須編寫大量檢查以檢查和修改您的輸入和SQL。 沒有銀彈 。 (實際上, PreparedStatement
是您的靈丹妙葯。但是沒有其他靈丹妙葯。)
Google搜索“消毒sql輸入”之類的項目。 您將找到以下資源:
PreparedStatement
。 (鑒於由於Redshift的限制,您無法正確執行此操作):
更多PostgreSQL standard_conforming_strings
設置為on
所有你需要做的是雙引號,使得'
到''
。 而已。
除非關閉standard_conforming_strings
或使用E''
字符串,否則反斜杠並不重要。 如果其中任何一個是正確的,則必須改用反斜杠轉義。
由於Redshift基於古代PostgreSQL版本的分支,因此我不確定它如何應用於它。 閱讀有關其詞法結構和語法的文檔是明智的,以驗證它與PostgreSQL的工作方式一致。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.