你的網站正在裸奔嗎?

SQL Injection真的是老掉牙的話題了,很不幸地,它卻始終是導致資安事件的主要凶手之一。

只要一個好傻好天真的程式設計師寫錯一行程式碼(例如: cmd.CommandText = "SELECT Title, Content, Date FROM tblNews WHERE id=" + Request["id"];),不管你用的是ASP、JSP還是PHP,資料庫連的是SQL、MySQL還是ORACLE,整個資料庫等同於完全公諸於世,任人把玩。原本應該要固若金湯的網站系統,這下跟在大街上裸奔沒有兩樣。

這是我很早以前在RUN!PC發表過的文章,源於一個自己遇到的真實案例(一個兩三千人活動的網站),文章裡很寫實地展示了不留意SQL Injection的問題,後果可能有多嚴重。幾年後,隨著駭客自動工具的不斷研發及技術提升,SQL Injection的威脅更是有增無減,所有開發人員務必要建立正確的觀念,審慎因應。

文章在此,僅供大家參考。

另外,還有另一篇文章--ASP.NET防駭指南,也值得看一下。

Published 07 May 2008 08:04 AM 由 Jeffrey
Filed under: ,


意見

# Drick said on 13 May, 2008 10:05 PM

你好,我是新手:

cmd.CommandText = "SELECT Title, Content, Date FROM tblNews WHERE id=" + Request["id"];

想問問這行為什麼會等同於完全公諸於世??

是不是因為沒有用上parameter 把id 引進?

其實使用SQLCommand的parameter是不是真的可以完全解決SQL Injection問題?

# Jeffrey said on 13 May, 2008 11:06 PM

To Drick, 把使用者輸入的內容"直接"變成SQL指令的一部分會讓使用者有機會直接對你的DB下SQL指令,廣義一點來說,只要是使用者輸入的內容,變成網頁的Javascript、DOS或Shell的指令,都一樣有危險。

文中有兩個Link連結到我的兩篇文章,建議你可以參考一下,裡面說得蠻詳細的。

# 蝌蚪 said on 14 May, 2008 11:02 PM

今天早上公司內部開了個有關 SQL Injection 的會議, 會中同事所準備的投影片中有一個 link 覺得眼熟, 仔細一看 URL 發現就是李兄的這篇文章~~

多謝李兄分享 :p

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 

請輸入以上的數字:

【請注意】意見送出後可能需要幾分鐘才會出現在網頁上,請耐心等候。

搜尋

Go

<May 2008>
SunMonTueWedThuFriSat
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567
 
RSS


BlogLook Score and Rank

Syndication