Kiểu tấn công CSS điển hình nhất xảy ra khi tin tặc cố tình chèn một đoạn văn bản có chứa script độc hại vào các form nhập dữ liệu. Nội dung nhập vào có thể chứa các thẻ hoặc cùng các đoạn mã hết sức nguy hiểm. Trình duyệt, khi truy nhập site, cho rằng các srcipt này do máy chủ gửi tới, hoàn toàn vô hại nên sẽ chạy nó ở cấp độ bảo mật bình thường, gây ra hậu quả tai hại cho máy tính của người sử dụng ....
ASP: Các nguyên tắc bảo mật triển khai ứng dụng Web : trang đọc lần An tồn trước khả bị cơng CSS (Cross-Site Scripting) Kiểu cơng CSS điển hình xảy tin tặc cố tình chèn đoạn văn có chứa script độc hại vào form nhập liệu Nội dung nhập vào chứa thẻ đoạn mã nguy hiểm Trình duyệt, truy nhập site, cho srcipt máy chủ gửi tới, hoàn toàn vơ hại nên chạy cấp độ bảo mật bình thường, gây hậu tai hại cho máy tính người sử dụng Để bảo vệ khỏi bị công theo kiểu CSS, cần ý điểm sau: - Cập nhật thường xuyên sửa lỗi bảo mật IIS Windows - Lọc ký tự đặc biệt người sử dụng nhập vào < > " ' % ( ) & + - Lọc để loại bỏ ký tự đặc biệt, kết xuất sở thông tin nhập vào người sử dụng Xem kỹ liệu từ: - Request.Form Collection Request.QueryString Conllection Request Object Database Cookie Các biến Session Application Để lọc được, cần xác định cụ thể lược đồ mã hoá ký tự trang Web, thẻ META, phần header Ví dụ: Ứng dụng khơng cần sử dụng cookie thường trực Cookie thường trực tệp, ứng dụng Web gửi tới máy tính người sử dụng tồn ổ cứng máy tính họ khơng cịn duyệt site Chúng lưu số thông tin người sử dụng để ứng dụng Web tuỳ biến nội dung cho phù hợp với đối tượng người sử dụng cho phép họ bỏ qua giai đoạn đăng ký đăng nhập Các cookie không thường trực lưu nhớ máy tính người sử dụng tồn thời gian người sử dụng duyệt site IIS dựa vào cookie không thường trực để xác định phiên ASP Khơng có nó, IIS khơng thể trì thơng tin phiên làm việc, chẳng hạn biến phiên Nếu site bạn sử dụng cookie thường trực, không nên yêu cầu IIS lưu trữ chúng tệp log IIS Nếu tệp log lưu lại tất thông tin đăng nhập người sử dụng có nhiều khả năng, thoả hiệp đó, thơng tin tiết lộ ngồi Sử dụng SSL cho tất trang nhạy cảm chuyển mạng Internet SSL mã hoá nội dung thơng điệp TCP/IP để khơng bị nhịm ngó đường truyền SSL, giải pháp mã hoá khác VPN chẳng hạn, cần thiết gửi thơng tin nhạy cảm (như số thẻ tín dụng) qua mạng Cơ hội thâm nhập đường truyền lấy cắp thơng tin bí mật thấp song khơng phải khơng thể có.Người sử dụng khơng đặt niềm tin vào site bạn thông tin nhạy cảm khơng mã hố Tuy nhiên, mặt trái SSL làm chậm lại hiệu thực ứng dụng Mức sử dụng tài nguyên hệ thống CPU đòi hỏi tiến trình mã hố giải mã cho trang SSL cao từ 10 đến 100% so với trang khơng bình thường Nếu máy chủ bạn có lưu lượng trang SSL cao, bạn phải cân nhắc tới việc sử dụng thêm tăng tốc SSL phần cứng Yêu cầu người sử dụng đăng nhập sử dụng ứng dụng Nguyên tắc áp dụng cho ứng dụng có yêu cầu thủ tục đăng nhập Điều có nghĩa việc đăng nhập tự động dựa cookie không phép Mặc dù người sử dụng thấy phiền hà cho họ đăng nhập tự động dựa cookie có nhiều nguy hiểm (và ta thấy phần trước, sử dụng cookie thường trực lúc phù hợp) Một biện pháp cần thiết để bảo vệ mật huỷ tính Autocomplete IE trường mật Điều thực cách thêm thuộc tính AUTOCMPLET ="OFF" cho thẻ Ví dụ: Log out người sử dụng khỏi hệ thống họ rời site Giả sử người sử dụng xem trang web site bạn, sau họ truy cập site cuối lại định quay trở lại trang bạn cách ấn phím BACK Trong trường hợp này, ứng dụng phải yêu cầu người sử dụng đăng nhập lại lần Phát tình tương tự tình vừa người sử dụng phải dựa hoàn toàn vào script chạy phía trình duyệt mà khơng thể dựa vào server khơng biết người sử dụng đâu Cách giải đầy đủ cho vấn đề sử dụng giải pháp bảo mật Proxy Server Netegrity SiteMinder (http://www.netegrity.com).Giải pháp Proxy Server giám sát yêu cầu Web từ trình duyệt ghi lại địa trình duyệt truy nhập để ứng dụng kiểm tra Một cách thức không đầy đủ việc kiểm tra giới hạn site thực cách thiết lập Request.ServerVariables("HTTP_REFERER") Nếu người sử dụng có gắng truy nhập trang khác với trang đăng nhập, từ URL site khác, họ bị từ chối Tuy nhiên, phương pháp ngăn ngừa người sử dụng rời bỏ site bạn để tới site khác sau lại quay trở lại site bạn tiếp tục phiên làm họ 6.Cắt kết nối người sử dụng không tương tác với site khoảng thời gian định Có hai giải pháp cho vấn đề này, giải pháp phía máy chủ giải pháp sử dụng script phía trình duyệt Trong giải pháp thứ nhất, sử dụng IIS Manager đặt giới hạn phiên ASP khoảng thời gian mong muốn (giá trị mặc định 20 phút) Trong ứng dụng, lưu trữ thông tin truy nhập vào biến phiên làm việc kiểm tra trang người sử dụng duyệt qua Nếu thông tin truy nhập không thuộc biến phiên, người sử dụng bị cắt kết nối với site ứng dụng cần định hướng họ sang trang truy nhập hệ thống Hơn nữa, chưa phải tin cậy tuyệt đối, bạn viết mã để xử lý cắt kết nối người sử dụng kiện Session_OnEnd tệp Global.asa Giải pháp phía client sử dụng chút JavaScript Chèn thêm đoạn mã sau vào đầu trang Web kết xuất ứng dụng: window.setTimeout("window.navigate('Logout.asp')", 900000); 'Logout.ASP' trang để cắt kết nối người sử dụng với ứng dụng 9000000 khoảng thời tối đa tính mily giây người sử dụng trì phiên làm việc họ trường hợp khơng có tương tác với site Ứng dụng không cho phép login đồng thời Yêu cầu có nghĩa thời điểm, người sử dụng truy nhập ứng dụng với phiên làm việc khác Đây nguyên tắc áp dụng cho phần lớn ứng dụng client/server máy trạm khác Trong môi trường IIS/ASP, việc đáp ứng yêu cầu khơng có khó khăn kiện Session_OnStart Session_OnEnd Global.asa sử dụng để kiểm tra phiên truy nhập thời người sử dụng Bạn áp dụng giải pháp sở liệu để huỷ phiên làm việc tồn phiên làm việc bắt đầu Mã nguồn ứng dụng không chứa thích người phát triển Bất cấp bảo mật thất bại Trong trường hợp truy nhập vào tệp mã nguồn Website thích người phát triển trợ giúp đắc lực cho tin tặc, nguy hiểm trường hợp mã nguồn có chứa "viên ngọc" tên mật dùng trình chạy thừ ứng dụng Yêu cầu áp dụng cho tệp script, chằng hạn trang ASP, không áp dụng cho đoạn mã đối tượng COM biên dịch Trước đây, điểm yếu bảo mật chưa khắc phục IIS làm cho script ASP số site dễ bị đọc trộm Nhiều tin tặc biết học đọc script cách thêm chuỗi "::$DATE" vào cuối yêu cầu truy xuất trang Để tránh rủi ro xảy ra, cần loại bỏ thích trang ASP, HTML mã JavaScript Bạn thực tay cách nhanh viết chương trình để loại bỏ thích từ loại tệp khác Không lưu trữ thông tin kết nối sở liệu global.asa Thông tin kết nối sở liệu gồm tên server , tên sở liệu, thơng tin truy nhập SQL Server Vì tệp văn bản, thơng tin global.asa bị lộ rơi vào tay đối tượng sử dụng khơng mục đích Những thơng tin nên lưu trữ nơi khác Hai cách phổ biến lưu trữ tệp Register Lưu trữ thông tin kết nối sở liệu tệp sau đọc File System Object XML Parser cách an toàn lưu global.asa Một giải pháp lưu thông tin tệp khác sử dụng tệp UDL cho phép lưu tất chi tiết kết nối Chuỗi kết nối ADO trở thành "FILE Name =C:\ Path_That_IUSR__Can_Get_To\MyDataLink.UDL" tài khoản dịch vụ IIS, IUSR_phải có quyền truy nhập để đọc tệp Lưu thông tin kết nối hình thức mã hố registry cách an toàn Điều yêu cầu ứng dụng phải viết thơng tin mã hố vào registry thành phần COM phải thu giải mã thời gian chạy Đối với IS 5, sử dụng thành phần COM+, cịn có lựa chọn registry khác COM+ cho phép thành phần có Constructor thiết lập Component Services Manager Vì khơng mã hố thông tin, cách cho phép người quản trị site kiểm soát việc truy nhập sở liệu thay đổi vào lúc 10 Các tệp audit log sở liệu nên ghi nhận tất thay đổi liệu Các tệp audit log sở liệu cung cấp thông tin khứ thay đổi liệu bảng Một cách thông thường tạo trigger sở liệu để ghi lại tất thao tác Insert, Update Delete Tuy nhiên, ghi nhận tất thay đổi ghi làm tăng kích cỡ sở liệu bạn lên nhiều lần Để giảm khối lượng liệu lưu, cần phải cân nhắc kỹ thay đổi liệu bảng cần ghi nhận Mặc dù tạo bảng viết trigger tay, để giảm nhẹ khối lượng cơng việc, sử dụng giải pháp tự động Một số sản phẩm script miễn phí địa http://www.sqldevpro.com/articles/MagicAuditingCode.htm giúp bạn thực điều 11 Sử dụng thủ tục lưu sẵn (stored procedure) để truy nhập sở liệu Giới hạn việc truy nhập sở liệu, cho phép thực thông qua thủ tục lưu sẵn có nhiều ưu điểm bảo mật hiệu thực Cách tiếp cận nên tính đến từ bắt đầu phát triển ứng dụng để việc triển khai sau dễ dàng Sử dụng thủ tục lưu sẵn an toàn sử dụng ADO Recoredset lệnh SQL qua cho phép có người sở hữu sở liệu, dbo, có quyền quyền truy nhập tới bảng tất người sử dụng khác Người sử dụng có quyền thi hành thủ tục lưu sẵn khơng có quyền đọc sửa đổi liệu bảng cách trực tiếp Chỉ có dbo người quản trị phép sử dụng Query Analyzer Crystal Reports để làm việc với liệu Vì vậy, u cầu có nghĩa Crystal Reports công cụ tương tự khác sử dụng Website, việc thu nhận liệu phải triển khai qua thủ tục lưu sẵn Với cách tiếp cận này, cần tạo thủ tục cho bảng cho lệnh Select, Insert, Update and Delete Bạn tạo lớp bao (wrapper class) đóng vai trị giao diện thủ tục tầng truy nhập sở liệu ứng dụng Dưới thí dụ thủ tục chèn liệu vào bảng Authors sở liệu nhà xuất bản: CREATE PROCEDURE dp_authors_ins @au_id varchar(11), @au_lname varchar(40), @au_fname varchar(20), @phone char(12) = NULL OUTPUT , @address varchar(40) = NULL , @city varchar(20) = NULL , @state char(2) = NULL , @zip char(5) = NULL , @contract bit AS IF @phone IS Null SET @phone = ('UNKNOWN') INSERT INTO authors WITH (ROWLOCK) ( au_id, au_lname, au_fname, phone, address, city, state, zip, contract) VALUES (@au_id, @au_lname, @au_fname, @phone, @address, @city, @state, @zip, @contract) SELECT @phone = phone FROM authors WHERE au_id = @au_id GO Đọc thay đổi liệu có khác với cách tiếp cận thủ tục lưu sẵn Thay làm việc với recorset ADO tạo câu lệnh SQL để thi hành server, tất việc truy nhập sở liệu thông qua đối tượng điều khiển ADO Các đối tượng điều khiển ADO thi hành thủ tục lưu sẵn ... trang SSL cao, bạn phải cân nhắc tới việc sử dụng thêm tăng tốc SSL phần cứng Yêu cầu người sử dụng đăng nhập sử dụng ứng dụng Nguyên tắc áp dụng cho ứng dụng có yêu cầu thủ tục đăng nhập Điều có... lưu sẵn có nhiều ưu điểm bảo mật hiệu thực Cách tiếp cận nên tính đến từ bắt đầu phát triển ứng dụng để việc triển khai sau dễ dàng Sử dụng thủ tục lưu sẵn an toàn sử dụng ADO Recoredset lệnh... thời điểm, người sử dụng truy nhập ứng dụng với phiên làm việc khác Đây nguyên tắc áp dụng cho phần lớn ứng dụng client/server máy trạm khác Trong môi trường IIS/ASP, việc đáp ứng u cầu khơng có