我正在收緊我的Web應用程序,現在我正在使用SQL。我已經有了sql參數,加倍撇號,剝離javascript和編碼html。除了上面的事情之外,我還需要擔心其他事情嗎?什麼是需要知道黑客使用SQL注入技術
回答
參數化查詢時,才需要如果你是動態生成使用從數據的查詢。用戶。
有使用上的東西,如Oracle,這也是有用的這些查詢的好處。
別的東西,你能做的就是確保連接到數據庫的用戶有權限最少需要。
你可以看看這裏的一些建議,關於防範SQL注入: http://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet
根據您的偏執狂,你可以只使用存儲過程來做到這一點接入,但是,如果你需要動態查詢更加困難。
,您可選擇可以使用視圖,這樣,它是不可能的,除非你有看法觸發器,使用該查詢更改數據庫中的任何數據。
可以使用另外一個頁面是在這裏: http://www.wwwcoder.com/Directory/tabid/68/type/art/site/2966/parentid/258/Default.aspx
但是,有在把更多的安全性比是合理的沒有意義的,所以你應該權衡你的保護和能走多遠。
例如,它是否值得加密你的一些列?這導致了更多關於如何保護密鑰的問題,但是,如果您擔心有人盜用您的機器並獲取可能需要考慮的數據庫文件。
如果您使用參數化查詢,那麼您不需要執行您在帖子中描述的任何內容。 This article似乎是一個關於這個問題的很好的討論。
要重申爲重點,銀子彈用於防止SQL注入攻擊是僅通用戶輸入到通過參數化查詢SQL。
確保所有輸入都包含在引號中。如果你有類似......接受= 1或年齡= 30 ......你可能在那裏有一個安全漏洞:......接受= 1; DELETE ....
編輯:是的攻擊者可以使用1" ;刪除,但不以逃脫輸入工作
攻擊者也可以只包括一個引號:'「; DROP TABLE ...' – 2009-09-01 22:23:00
該死的......這就是我花了我的時間來輸入我的評論:) – 2009-09-01 22:25:24
雷克斯M,他已經表示他正在逃避「所以,所以這種方法是行不通的。如果輸入是逃脫,那不行? – 2009-09-01 22:30:20
我建議你下載自動Microsoft Source Code Analyzer for SQL Injection,讓它先分析你的代碼,你可能會獲得一些廉價的低掛水果。
cyberpunk可以通過串聯從uri查詢中獲得perl shell。 3個解決方案是使用存儲過程,準備語句或gql代替。
「cyberpunk」 - 哇,這是我一會兒沒有聽到的一個詞。 – 2009-09-02 00:09:50
從技術上講,Javascript和HTML與SQL注入攻擊無關,但它們是注入式攻擊。
我不同意剝離,至少在不通知用戶您已經這樣做的情況下。首先,實際輸入可能實際上是有效的,刪除某些字符可能實際上改變了輸入的語義,並且通常無法確定在存儲時間該值可能會被渲染到的每個媒介。 URL,LDAP,XML或文件路徑注入攻擊如何?
你會發現很多安全「牧師」(我說的鸚鵡),認爲SQL注入是最好的保護通過剝離可能導致輸入數據損害的字符。只要你不接受O'Brian作爲例證的有效輸入,那就沒事了。如果他們宣傳了正確的編碼方式會更好,因爲所有這些努力都可能被用來解決大量的注入攻擊。
其實我曾經處理由誰寫的東西像MS安全專家編寫的代碼:
userInput = userInput.Replace( 「 - 」, 「」).Replace( 「'」, 「」 );
公平對待他人他是一個非常聰明的傢伙,我相信他今天不會寫這篇文章,但是你能看到「MyName -'- SELECT * FROM User」實際上是否可以解決這個問題嗎?
您可以接受的字符範圍很好,而只要您不阻止有效值,您就不會有其他字符。 <也是一個有效的數學運算符,或者用戶需要輸入示例HTML代碼。價值的上下文決定什麼是有效的,什麼不是。
然後,如果您獲得包含不允許的字符的值,則向用戶顯示一條錯誤消息,告訴他們有關無效值的信息,並要求他們在重新發送前修復它。這可以在以後節省很多痛苦,這與數據驗證一樣多,並確保您的程序功能與安全性相關。是的,你需要在客戶端檢查這一點,以防止流量下降,並在服務器端防止攻擊。
然後,只要您的渲染值適當地進行編碼。參數化查詢適用於解決SQL注入問題,但它們不適用於呈現HTML,URL和JavaScript。正確的SQL編碼值(例如您提到的雙引號)同樣安全,在某些情況下更可取(假設您有合理的DBA,他們並不堅持所有內容都必須是存儲過程並允許正確編碼的動態SQL)。
另一點,System.Web HTML和URL編碼函數有一些缺陷。有一個Microsoft團隊製作瞭解決這些問題的Anti Cross Site Scripting庫,並提供了更具體的編碼選項。我認爲它叫做Anti-XSS或類似的東西。絕對值得一看。我想知道它是否被納入.Net 4?
參數化查詢爲保持壞人走了很長的路,但要確保他們背後沒有奇怪的,可注入的動態sql組合,以打開新的漏洞。
其他,狂人的想法:不運行流行的開源軟件包,尤其是那些寫在語言與P.開始
- 1. 使用什麼技術來注入DLL?
- 2. PL/SQL需要知道的技術落後
- 3. 你知道什麼樣的SQL注入?
- 4. 被黑與MySQL注入,需要通知:
- 5. 有人知道GitHub for Windows UI背後的技術是什麼?
- 6. 實施CAS SSO需要什麼水平的技術技能/專業知識?
- 7. 使用案例之前需要啓發技術的要求是什麼?
- 8. 需要知道什麼是註冊命令的最佳做法
- 9. mapwow.com使用什麼技術?
- 10. SQL注入黑客企圖
- 11. 這是黑帽技術嗎?
- 12. PHP SQL注入阻止技術
- 13. 有誰知道用什麼加密技術的JDeveloper/SQL Developer來堅持憑據?
- 14. Jini技術是什麼?
- 15. 你知道什麼類型的IE瀏覽器黑客入侵?
- 16. 你知道什麼技術來避免條件分支?
- 17. Cooja技術信息需要
- 18. 解析值技術需要
- 19. 需要圖分區技術
- 20. php和newlines:我需要知道什麼?
- 21. 需要什麼技術/語言來組合Instant Messenger - 集成通知器?
- 22. Facebook使用什麼技術來通知用戶?
- 23. 發送圖片到Flash客戶端。使用什麼技術?
- 24. 考慮SQL注入這個PHP登錄技術是否安全?
- 25. 什麼技術需要可變紋理存儲
- 26. 什麼是「常見」(知道需要/有用)SQL數據庫操作?
- 27. twilio使用什麼樣的技術?
- 28. A.nnotate.com背後使用了什麼技術?
- 29. Facebook使用什麼技術鏈接?
- 30. 什麼時候需要知道從MS SQL服務器到MySQL
我喜歡明確的「我在精煉過程這篇文章」 – 2009-09-01 22:21:00
@Rex中號:*臉紅* – 2009-09-01 22:23:05
+1除了用過的參數化查詢之外,沒有必要做任何事情。所有的安全工作都爲你完成。嘗試做額外的工作去除引號在參數後是完全沒有用的。 – 2009-09-01 22:38:42