Cách phòng chống

Một phần của tài liệu Nghiên cứu một số vấn đề bảo mật ứng dụng web (Trang 27 - 36)

 Việc tấn công the SQL Injection dựa vào những câu thông báo lỗi do đó việc phòng chống hay nhất vẫn là không cho hiển thị những thông điệp lỗi cho ng-ời dùng bằng cách thay thế những lỗi thông báo bằng 1 trang do ng-ời phát triển thiết kế mỗi khi xảy ra trên ứng dụng.

Ta có thể thiết lập một trang ASP báo lỗi tùy biến nh- sau:

1. Tạo trang báo lỗi “error.asp” l-u vào th- mục chứa trang web. 2. Mở trình Internet Services Manager trong MMC.

3. Mở rộng phạm vi theo dõi Default Web Site của bạn.

4. Kích chuột phải vào th- mục chứa trang web và chọn Properties.

5. Kích vào tab Custom Errors.

6. Cuộn xuống và kích chọn vào 500;100 HTTP error và kích vào Edit Properties.

7. Thiết lập Message Type thành URL.

8. Thay đổi URL thành “…/error.asp” (không để dấu trích kép). 9. Kích OK để trở lại MMC.

Xây dựng các hàm để kiểm soát dữ liệu đầu vào một cách cẩn thận tức là những dữ liệu vào nào đ-ợc chấp nhận và loại bỏ tất cả các dữ liệu không liên quan mà cụ thể là nên loại bỏ những ký tự đặt biệt, những khoảng trắng, những từ khoá liên quan đến việc truy cập, sửa đổi và cập nhật dữ liệu.

- Thủ thuật khử nháy đơn (')

- Thủ thuật từ chối dữ liệu bất hợp lệ - Thủ thuật ràng buộc nhập dữ liệu hợp lệ ---

Sử dụng VBScript xây dựng các hàm sau: - Khử nháy đơn function escape(input) input = replace(input,"'",""") escape = input end function - Từ chối dữ liệu bất hợp lệ

function validate_string( input)

known_bad = array("select","insert","update","delete","drop","--","'","@ @","%%",";",">","<","+","-","$","*","#")

validate_string = true

for i = lbound( known_bad ) to ubound( known_bad ) if (instr(1, input, known_bad(i),vbtextcompare)<>0) then validate_string = false exit function end if next end function - Ràng buộc nhập dữ liệu hợp lệ

function validatepassword( input ) good_password_chars =

"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW XYZ0123456 789"

validatepassword = true for i = 1 to len (input) c = mid( input, i, 1)

if (Instr(good_password_chars,c) = 0) then validatepassword =false

end if next

end function

Khóa chặt SQL Server (SQL Server Lockdown)

Đây là ph-ơng pháp bảo mật ở mức độ quản trị cơ sở dữ liệu.

o Xác định các ph-ơng pháp kết nối đến server:

 Dùng các ch-ơng trình tiện ích để kiểm tra rằng chỉ có các th- viện mạng đang dùng là hoạt động.

o Kiểm tra tất cả các tài khoản có trong SQL Server

 Chỉ tạo tài khoản có quyền cấp thấp cho các ứng dụng

 Loại bỏ những tài khoản không cần thiết

 Đảm bảo rằng tất cả các tài khoản có một mật khẩu hợp lệ,… o Kiểm tra các đối t-ợng tồn tại.

 Nhiều extended stored procedure có thể đ-ợc xóa bỏ một cách an toàn. Nếu điều này thực hiện, thì cũng nên xem xét việc loại bỏ luôn những tập tin .dll chứa mã của các extended stored procedure

Xóa bỏ tất cả các cơ sở dữ liệu mẫu nh- “northwind” và

“pubs”

Xóa các stored procedure không dùng nh-: master..xp_cmdshell, xp_startmail, xp_sendmail, sp_makewwebtask

o Kiểm tra những tài khoản nào có thể truy xuất đến những đối t-ợng nào

 Đối với những tài khoản của một ứng dụng nào đó dùng để truy xuất cơ sở dữ liệu thì chỉ đ-ợc cấp những quyền hạn cần thiết tối thiểu để truy xuất đến những đối t-ợng nó cần dùng.

 Kiểm tra các phiên làm việc trên server

 Thay đổi “Startup và chạy SQL Server” ở mức ng-ời dùng quyền hạn thấp trong SQL Server Security.

Ngày nay khi mà việc xây dựng các ứng dụng th-ơng mại điện tử ngày càng phát triển, việc bảo mật ứng dụng là việc tối cần thiết. Nh-ng vẫn còn nhiều ứng dụng do sự yếu kém của nhà lập trình, sự thiếu kiến thức về bảo mật, thiếu sự giám sát của nhà quản trị mạng, lỗi SQL injection vẫn còn phổ biến trên khá nhiều website.

Thử đăng nhập vào trang http://www.petromekong.com.vn/viettool/login.asp

Nh- vậy là tôi đã đăng nhập với tài khoản admin và có toàn quyền chỉnh sửa, thêm bài viết, tạo, thay đổi các tài khoản của website. Một lỗi SQL injection nghiêm trọng!

T-ơng tự chúng ta kiểm tra website sau: www.so1tech.com.vn

Tiếp tục vào đăng nhập của website để liên hệ mua hàng: Tên truy cập: or’ ’ =’

Mật khẩu: or’ ’ =’

Xuất hiện cửa sổ

Lúc này chúng ta sẽ tiến hành mua sản phẩm của công ty, ngoài ra chúng ta có thể tìm hiểu thêm và có thể sẽ vào quyền admin để thay đổi nội dung thông tin.

Một số trang web đã tìm đ-ợc lỗ hổng SQL injection nh-

http://www.so1tech.com.vn http://www.petromekong.com.vn http://xinhmobile.com...

Lời kết

Trên đây là toàn bộ nội dung báo cáo đồ án tốt nghiệp do nhóm sinh viên lớp 45K – Khoa công nghệ thông tin thực hiện. Mặc dù phần lớn công việc đã đ-ợc thực hiện và quá trình tìm hiểu nội dung đã xong. Nh-ng do trình độ và thời gian còn hạn hẹp nên không tránh khỏi thiếu sót. Chúng em rất mong sự góp ý của Các Thầy giáo Cô giáo và các bạn sinh viên để làm tốt hơn cho những lần sau. Cuối cùng một lần nữa nhóm chúng Em xin chân thành cảm ơn sự giúp đỡ nhiệt tình của Thầy giáo Ts: Nguyễn Trung Hoà đã giúp đỡ chúng Em hoàn thành đồ án này.

Xin trân trọng cảm ơn!

Vinh, ngày 10 tháng 4 năm 2010 sinh viên thực hiện

Trần Văn Quế

Tài liệu tham khảo

[1] Internetworking Design Basics, Copyright Cisco Press 2003. [2] Internetwork Design Guide, Copyright Cisco Press 2003. [3] LAN Design Manual. BICSI.

[4] Mạng Máy tính và các hệ thống mở Nguyễn Thúc Hải NXBGD 1999 [5] Mạng căn bản - NXB Thống Kê.

[6] Giáo trình: Quản trị mạng – HTC.

[7] Mạng máy tính : Nguyễn Gia Hiểu – NXB Thông Tin.

[8] Giáo trình: Thiết kế và xây dựng mạng LAN và WAN - Dự án 112. [9] TCP/IP Network Administration. Craig Hunt, O‟Reilly & Associates. [10] www.Quantrimang.com

[11] http://www.google.com.vn

Một phần của tài liệu Nghiên cứu một số vấn đề bảo mật ứng dụng web (Trang 27 - 36)