Anken - Tổng hợp về SQL Injection (bài 4) - Y!m: This_Love_No1

Màu nền
Font chữ
Font size
Chiều cao dòng

Tổng hợp về SQL Injection (bài 4)

Chống tấn công kiểu SQL Injection

Xin lỗi anh em,bài này mình chưa chuyển qua Tv có dấu,mình sẽ cố gắng sửa nó.Anh em đọc tạm vậy

SQL Injection la gi ?

Viec thiet ke va dua website vao hoat dong luon doi hoi cac nha phat trien phai quan tam den van de va an toan, bao mat nham giam thieu toi da kha nang bi hacker tan cong. Thuong cac nha phat trien tap trung vao cac van de an toan cua he dieu hanh, he quan tri CSAL, webserver...chang han nhu hong bao mat tren IIS. Tuy nhien, co mot nguy co tiem an it duoc quan tam do la cac doan ma cua ung dung, mot trong so do la tan cong bang SQL injection.

SQL Injection la mot ki thuat cho phap nhung ke tan cong thi hanh cac cau lenh truy van SQL bat hop phap bang cac loi dung lo hong trong viec kiem tra de lieu nhau tu cac ung dung web..hau qua nay rat tai hai vi no cho phap ke tan cong co toan quyen , hieu chinh..tren co so du lieu cua ung dung, loi nay thuong xay ra tren cac ung dung web co du lieu duoc quan li bang cac he quan tri CSDL nhu SQL server, Oracle, DB2, Sysbase.

Xet mot vi du dien hinh, thong thuong de cho phet nguoi dung truy cap vao cac trang web duoc bao mat..he thong thuong xay dung trang dang nhap de yeu cau nguoi dung nhap thong tin ve ten dang nhap va password. Sau khi nguoi dung nhap thong tin vao, he thong se kiem tra ten dang nhap va mat khau co hop le huy khong de quyet dinh cho phep hay tu choi thuc hien tren.

Trong truong hop nay, nguoi ta co the dung 2 trang, mot trang HTML de hien thi Form nhap lieu va mot trang ASP dung de xu li thong tin nhap tu phia nguoi dung. Vd :

Login.htm

<form action="Execlogin.asp"method="post">

username : <input type="text" name= " txtusername">

password : <input type ="password" name=txtpassword">

<input type = "submit">

</form>

ExecLogin.asp

<%

Dim p_strausername, p_strPassword, objRS, serSQL

P_serUsername =

Request, Form ( "txtusername")

P_serPassword =

Request.Form("txtPassword")

serSQL = "SELECT * FORM tblUsers " & _"WHERE Username=' "

& _strUsername & _

"' and Password=' " & p-strPassword & " ' "

Set objRS =

Server.CreateObject ( "ADODB.Recordset")

objRS.open strSQL, "DSN=..."

if (objRS.EOF) Then

Response.write "invalid login."

Else

Response.write " you are logged in as " & objRS ("Username")

End If

Set objRS = Nothing

%>

thoat nhin, doan ma trong trang ExecLogin.asp duong nhu khong chua bat cu ,pt lo hong bao mat nao,. Nguoi dung khong the dang nhap ma khong co ten dang nhap va mat khau hop le. Tuy nhien, doan ma nay thus su khong an toan va la tien de cho tan cong SQL Injection. Dat biet, so ho nam o cho du lieu nguoi dung nhap vao duoc nam o cho du lieu nguoi dung nhap vao duoc dung de xay dung truc tiep cau lenh truy van SQL ..chinh dieu nay cho phep nung ke tan cong co the dieu khine duoc cau truy van se duoc thuc hien.

Vi du, neu nguoi dung nhap chuoi sau vao trong ca 2 o nhap lieu username/passowrd cua trang login.htm "

' or"='. Luc nay, cau truy van se duoc goi thuc hien la :

SELECT * FORM tblUsers WHERE Username=' ' or ''='' and Password = ''or''=''

Cau truy van nay la hop le va se tra ve tat ca cac ban ghi cua tblUsers, va doan ma tiep theo su li nguoi dung dang nhap bat hop phap nay nhu la nguoi dung dang nhap hop le.

Mot vi du khac cua tan cong SQL Injection nua la khi cac trang web su dung du lieu nhap vao theo dang querystring ( bang cach go cap tham so va gia tri truc tiep trang thanh dia chi hoac dung form voi thuc tinh ACCTION La GET . vi du sau minh hoa mot trang ASP nhan du lieu cho bien ID thong qua querystring va phat sinh noi dung cua trang do dua tren ID :

<%

Dim P-lngID, objRS, StrSQL

P_lngID = Request ( "ID")

strSQL = "SELECT * FORM

tblArticles WHERE ID=" & p_lngID

Set objRS =

Server.CreateObject("ADODB.Recordeset")

ObjRS.Open strSQL, "DSN=..."

If ( Not objRS.EOF) then

Response.Write

ObjRS("ArticleContent")

Set ObjRS = Nothing

%>

trong cac tinh huong thong thuong, doan ma nay hien thi noi dung cua Aricle co ID trung voi ID duoc chuyen den cho no duoi dang querystring. Vi du, trang nay co the duoc goi nhu sau :

http://www.examlpe.com/Article.asp?ID=1055, de hien thi noi dung cua article co ID la 1055

giong nhu vi du dang nhap o tren. Doan ma nay de lo so ho cho kha nang tan cong SQL Injection, ke tan cong co the thay the mot ID hop la bang cach gan ID cho mot gia tri khac, de thuc hien mot lenh SQL bat hop phap, vi du nhu : 0 or 1=1

cau truy van SQL luc nay se tra ve tat ca cac article tu bang du lieu vi no se thuc hien cau lenh :

SELCT * FORM tblArticles WHERE

ID=0 or 1=1

Tat nhien vi du nay duong nhu khong co gi nguy hiem nhung hay thu tuong tuong ke tan cong co the xoa toan bo CSDL bang cach chen vao cac doan lenh nguy hiem nhun lenh DELETE. Tat ca chi chi la don gian thay doi chuoi gan du lieu cho ID, vi du nhu :

http://examlpe.com/Article.asp?ID=1055; DELETE FORM tblArticles.

Tac hai va cach phong chong :

Tac hai cua dang tan cong SQL Injection tuy thuoc vao moi truong va cach cau hinh he thong. Neu ung dung su dung quyen dbo ( Quyen cua nguoi so huu CSDL ) khi thao tac du lieu. No co the xua toan bo cac bang du lieu. Tao cac bang du lieu moi...neu ung dung su dung quyen sa ( quyan quan tri he thong ). No co the dieu khien toan bo he CSDL va tham chi co the tao ra cac tai khoan nguoi dung bat hop phap de dieu khien he thong cua ban.

De phong tranh cac nguy co co the xay ra, hay bao ve cac cau truy van SQl bang cach kiem soat chan che tat ca cac du lieu nhap nhan duoc tu doi tuong Request ( Request, Request.QuuryString, Request.Form, Request.Cookies, va Request.Server Variables )

Trong truong hop du lieu nhap vao la chuoi, nhu trong vi du 1 , loi xuat phat tu viec co dau nhay don trong du lieu. De tranh dieu nay, thay the cac dau nhay don bang ham Replace de thay the bang 2 dau nhay don :

P_strUsername =

Replace(Request.Form("txtUsrname") , " ' ", "''" )

P_srtpassword =

Replace(Request.Form("txtPassword") , " ' ", "''" )

Trong truong hop du lieu nhap vao la so, nhu trong di du 2 , loi xuat phat tu viec thay the mot gia tri duoc tien doan la du lieu so bang chuoi chua cau lenh SQL Injection bat hop phap. De tranh dieu nay, don gian la kiem tra du lieu co dung kieu nay hay khong :

P_IngID = CLng (Request ("ID"))

Nhu vay, neu nguoi dung truyen vao mot chuoi, ham nay se tra ve loi ngay lap tuc.

Ngoai ra de tranh cac nguy co tu tan cong SQL Injection, nen chu y loai bo bat ki thong tin ki thuat nao chua trong thong diep chuyen toi cho nguoi dung khi ung dung co loi. Cac thong bao loi thong thuong tiet lo cac chi tiet ki thuat co the cho phep ke tan cong biet duoc dieu yeu cua he thong.

Cuoi cung. De han che thiet hai do tan cong SQL Injection, nen kiem soat chat che va giai han queyn xu li du lieu cua tai khoan nguoi dung ma dung dung web dang su dung. Cac dung dung thuong nen tranh dung cac quyen nhu dbo hay sa. Quyen cang han che, thiet hai thi se cach it thoi.

fantomas311(VNISS)

Bạn đang đọc truyện trên: Truyen2U.Net