簡體   English   中英

防止Redshift SQL注入

[英]Preventing Redshift SQL Injection

我有一種不幸的情況,我必須通過串聯字符串來構建SQL字符串-經典的SQL注入方案。 不能使用准備好的陳述。

如果我逃脫了'字符,我安全嗎? 還是還有其他攻擊媒介?

我使用的是MyBatis,它是${}表示法(與#{} ,它會生成准備好的語句)。 我對此別無選擇 -必須是${} 我不能使用准備好的陳述。

編輯:

增加一點清晰度; 這是ASW Redshift UNLOAD命令 UNLOAD的第一個參數是SQL字符串。

PreparedStatementWikipedia )確實是要走的路。 一口氣,您就消除了SQL注入黑客的大量工作和風險。

如果您絕對不能/不會使用PreparedStatement ,那么您需要閱讀各種策略。 您必須編寫大量檢查以檢查和修改您的輸入和SQL。 沒有銀彈 (實際上, PreparedStatement 您的靈丹妙葯。但是沒有其他靈丹妙葯。)

Google搜索“消毒sql輸入”之類的項目。 您將找到以下資源:

(鑒於由於Redshift的限制,您無法正確執行此操作):

更多PostgreSQL standard_conforming_strings設置為on 所有你需要做的是雙引號,使得''' 而已。

除非關閉standard_conforming_strings或使用E''字符串,否則反斜杠並不重要。 如果其中任何一個是正確的,則必須改用反斜杠轉義。

由於Redshift基於古代PostgreSQL版本的分支,因此我不確定它如何應用於它。 閱讀有關其詞法結構和語法的文檔是明智的,以驗證它與PostgreSQL的工作方式一致。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM