簡體   English   中英

有些人需要了解黑客使用的SQL注入技術

[英]What are Some need to Know SQL Injection Techniques that Hackers use

我正在收緊我的Web應用程序,現在我正在使用SQL。 我已經有sql參數,加倍撇號,剝離javascript和編碼html。 除了上面的內容之外,還有其他我需要擔心的事情嗎?

如果您使用參數化查詢,那么您不需要執行您在帖子中描述的任何內容。 這篇文章似乎是關於這個主題的一個非常好的討論。

重申一下,防止SQL注入攻擊的銀彈只能通過參數化查詢將用戶輸入傳遞給sql。

僅當您使用來自用戶的數據動態生成查詢時,才需要參數化查詢。

在像oracle這樣的東西上使用這些查詢是有好處的,這也很有用。

您可以做的其他事情是確保連接到數據庫的用戶具有所需的最少權限。

您可以在這里查看有關防止SQL注入的一些建議: http//www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet

根據您的偏執,您可以使用存儲過程來進行訪問,但如果您需要進行動態查詢,則會更加困難。

對於select,您可以使用視圖,除非您在視圖上有觸發器,否則無法使用該查詢來更改數據庫中的任何數據。

另一個可以使用的頁面是: http//www.wwwcoder.com/Directory/tabid/68/type/art/site/2966/parentid/258/Default.aspx

但是,提供更多的安全性是沒有意義的,所以你應該權衡你正在保護的東西以及要走多遠。

例如,加密一些列是否值得? 這會導致更多關於如何保護密鑰的問題,但是,如果您擔心有人入侵您的計算機並獲取可能需要考慮的數據庫文件。

從技術上講,Javascript和HTML與SQL注入攻擊無關,但它們是注入攻擊。

我不同意剝離,至少在沒有通知用戶你已經這樣做的情況下。 例如,實際輸入實際上可能是有效的,刪除某些字符實際上可能會改變輸入的語義,並且通常無法確定存儲時是否可以在每個介質上呈現該值。 那么URL,LDAP,XML或文件路徑注入攻擊呢?

你會發現很多安全“牧師”(我說的是鸚鵡)認為SQL注入最好通過剝離可能導致輸入數據損壞的字符來保護。 只要您不接受O'Brian作為exmaple的有效輸入,那就好了直到罰款。 如果他們宣傳正確的編碼會更好,因為所有這些努力可能已被用於解決一大堆注入攻擊。

實際上我曾經不得不處理由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注入的自動化Microsoft源代碼分析器 ,讓它首先分析你的代碼,你可以收獲一些便宜的低懸的成果。

確保所有輸入都包含在引號中。 如果你有......接受= 1或年齡= 30 ......你可能會有一個安全漏洞:...接受= 1; 刪除....

編輯:是的攻擊者可以使用1“;刪除,但這不適用於轉義輸入。

一個cyberpunk可以通過串聯從uri查詢中獲取perl shell。 3個解決方案是使用存儲過程,preparedstatements或gql代替。

參數化查詢在保持壞人方面有很長的路要走,但要確保它們背后沒有奇怪的,可注入的動態sql混合物來打開新的漏洞。

其他,瘋狂的邊緣想法:不要運行流行的開源軟件包,尤其是那些以P開頭的語言編寫的軟件包。

暫無
暫無

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

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