nhập vào theo dạng querystring (bằng cách gõ cặp tham số và giá trị trực tiếp trên
thanh địa chỉ hoặc dùng form với thuộc tính ACTION là GET). Ví dụ sau minh
họa một trang ASP nhận dữ liệu cho biến ID thông qua querystring và phát sinh
nội dung của trang đó dựa trên ID:
Code:
<%
Dim p_lngID, objRS, strSQL
p_lngID = Request("ID")
strSQL = "SELECT * FROM tblArticles WHERE ID=" & p_lngID
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN= "
If (Not objRS.EOF) Then Response.Write objRS("ArticleContent")
Set objRS = Nothing
%>
Trong các tình huống thông thường, đoạn mã này hiển thị nội dung của article có
ID trùng với ID được chuyển đến cho nó dưới dạng querystring. Ví dụ, trang này
có thể được gọi như sau: để hiển
thị nội dung của article có ID là 1055.
Giống như ví dụ đăng nhập ở trước, đoạn mã này để lộ sơ hở cho một SQL
injection attack. Kẻ tấn công có thể thay thế một ID hợp lệ bằng cách gán ID cho
một giá trị khác, để thực hiện một lệnh SQL bất hợp pháp, ví dụ như: 0 or 1=1
(nghĩa là, or 1=1).
Câu truy vấn SQL lúc này sẽ trả về tất cả các article từ bảng dữ liệu vì nó sẽ thực
hiện câu lệnh:
Code:
SELECT * FROM tblArticles WHERE ID=0 or 1=1
Tất nhiên ví dụ này dường như không có gì nguy hiểm, nhưng hãy thử tưởng tượng
kẻ tấn công có thể xóa toàn bộ CSDL bằng cách chèn vào các đoạn lệnh nguy hiểm
như lệnh DELETE. Tất cả chỉ là đơn giản thay đổi chuỗi gán dữ liệu cho ID, ví dụ
như:
Tất nhiên ví dụ này dường như không có gì nguy hiểm, nhưng hãy thử tưởng tượng
kẻ tấn công có thể xóa toàn bộ CSDL bằng cách chèn vào các đoạn lệnh nguy hiểm
như lệnh DELETE. Tất cả chỉ là đơn giản thay đổi chuỗi gán dữ liệu cho ID, ví dụ
như:
Code:
DELETE FROM tblArticles
2. Các tác hại và cách phòng tránh
Tác hại từ SQL Injection attack tùy thuộc vào môi trường và cách cấu hình hệ
thống. Nếu ứng dụng sử dụng quyền dbo (quyền của người sở hữu CSDL - owner)
khi thao tác dữ liệu, nó có thể xóa toàn bộ các bảng dữ liệu, tạo các bảng dữ liệu
mới, … Nếu ứng dụng sử dụng quyền sa (quyền quản trị hệ thống), nó có thể điều
khiển toàn bộ hệ quản trị CSDL và với quyền hạn rộng lớn như vậy nó có thể tạo
ra các tài khoản người dùng bất hợp pháp để điều khiển hệ thống của bạn.
Để phòng tránh các nguy cơ có thể xảy ra, hãy bảo vệ các câu truy vấn SQL là
bằng cách kiểm soát chặt chẽ tất cả các dữ liệu nhập nhận được từ đối tượng
Request (Request, Request.QueryString,Request.Form, Request.Cookies, and
Request.ServerVariables).
- Trong trường hợp dữ liệu nhập vào là chuỗi, như trong ví dụ 1, lỗi xuất phát từ
việc có dấu nháy đơn trong dữ liệu. Để tránh điều này, thay thế các dấu nháy đơn
bằng hàm Replace để thay thế bằng 2 dấu nháy đơn:
Code:
p_strUsername = Replace(Request.Form("txtUsername"), "'", "''")
p_strPassword = Replace(Request.Form("txtPassword"), "'", "''")
- Trong trường hợp dữ liệu nhập vào là số, như trong ví dụ 2, lỗi xuất phát từ việc
thay thế một giá trị được tiên đoán là dữ liệu số bằng chuỗi chứa câu lệnh SQL bất
hợp pháp. Để tránh điều này, đơn giản hãy kiểm tra dữ liệu có đúng kiểu hay
không:
Code:
p_lngID = CLng(Request("ID"))
Như vậy, nếu người dùng truyền vào một chuỗi, hàm này sẽ trả về lỗi ngay lập tức.
Ngoài ra để tránh các nguy cơ từ SQL Injection attack, nên chú ý loại bỏ bất kì
thông tin kĩ thuật nào chứa trong thông điệp chuyển xuống cho người dùng khi ứng
dụng có lỗi. Các thông báo lỗi thông thường tiết lộ các chi tiết kĩ thuật có thể cho
phép kẻ tấn công biết được điểm yếu của hệ thống.
Cuối cùng, để giới hạn mức độ của SQL Injection attack, nên kiểm soát chặt chẽ và
giới hạn quyền xử lí dữ liệu đến tài khoản người dùng mà ứng dụng web đang sử
dụng. Các ứng dụng thông thường nên tránh dùng đến các quyền như dbo hay sa.
Quyền càng bị hạn chế, thiệt hại càng ít.
Các tài liệu tham khảo
SQL Injection FAQ:
index=2&tabid=3
Advanced SQL Injection : l_injection.pdf
Preventing SQL Injection:
Biên dịch từ:
Convert Datadabase Forum
Convert Datadabase từ Phpbb/Ubb/Ibf qua VBB Và Ngược Lại
Bài viết được dịch bởi thamtu (Admin )
Copyright by Baby Arthas
Hiện nay VBB đã tỏ ra là diễn đàn có nhiều ưa thế về giao diện, tốc độ load, kích
thước database và cách sủ dụng cũng như bào mật.
Có nhiều ngưòi hiện đang dùng phpBB, IBF,UBB, muốn chuyển sang dùng
VBB, sẽ bị mất dữ liệu? Làm lại từ đầu? Điều này đã thúc đẩy nhiều người tìm
hiểu hơn về việc nay
Đây gọi là cách covert từ phpBB,Ibf, Ubb, >VBB.
Đây là những step đã convert cái forum phpbb qua vbb forum thành công.
Xin được gửi kinh nghiệm đến các bạn
1/ Trước tiên bạn phải install cái vbb 2.3 vào web bạn trước, bởi vì muốn convert
phpbb qua vbb thì dùng vbb 2.3 mới được.
2/ Bạn phải bỏ cái database của phpbb chung với database của vbb.
3/ Download cái file Import (DownLoad Phía Dưới) và upload nó vào root folder
của cái forum vbb 2.3 của bạn.
4/ Bạn phải mở url và run cái file bạn vừa upload lên, like this:
nó sẻ hỏi user/pass
cho database thì bạn điền vào.
5/ Bạn cứ theo theo màn hình mình khi nó hỏi bạn phải làm gì thì làm theo tôi (cái
này thì tôi không nhớ hết,nhưng mà củng không khó lắm đâu nhưng phải đọc kỷ và
làm theo nó)
6/ Còn tuỳ theo database bạn bao lớn thì nó sẻ convert qua vbb database. Thời gian
convert phụ thuộc vào data của bạn nhiều hay ít, nên bạn cần phải kiên nhẩn chờ
đợi trong thời gian cái script chuyển đổi database từ phpbb sang vbb.
7/ Sau khi xong xuôi hết, thì bạn update vbb 2.3 lên v3.0 (lúc này đừng nên vào
config gì forum hết, chỉ nên update lên 3.0)
8/ Sau khi update lên vbb 3.0 xong, bạn mới vào cpanel của forum, config lại hết,
từ forum permission, Admin permission, Moderator permission. Nói chung bạn
phải config lại hết chứ nhiều khi cái permission từ phpbb chuyển qua nó không
đúng hết.
Hoàn toàn tương tự cho IBF, UBB,
Download File Import [Click Here To Download]
[ ]
Download vBulletin 2.3 Final [Click Here To Download]
[ ]
Chúc bạn thành công.
(c) Baby
Đăng ký một diễn đàn miễn phí
1 số dịch vụ nữa cho anh em lựa chọn (Cách đăng kí gần như giống nhau nên khỏi
chỉ nhé
)
(phpbb)
Thanks - Baby !!!
http:///www.invisionfree.com
www.forumhoster.com
www.net.tf (c)
www.invisionfree.com
Hiển thị số người online trên một trang web.