7 thủ thuật giúp bảo mật ứng dụng ASP.NET developer cần biết
Việc sử dụng internet và số lượng các ứng dụng Web trên internet đã tăng với cấp số nhân, lợi dụng điều này nhiều kẻ xấu vẫn đang tiếp tục dùng các thủ thuật để hack chúng. Điều này có thể vì lợi ích cá nhân hoặc chỉ là không chuyên. Mặc dù ý định của kẻ xấu là làm hại đến các tổ chức hosting hoặc người dùng là đánh cắp tài khoản. Là một nhà phát triển web chuyên nghiệp, bạn phải biết được các chiêu thức để giúp ứng dụng bảo mật hơn. Trong bài viết này mình sẽ liệt kê và giải thích 7 thủ thuật bảo mật ứng dụng web.
Đừng để người dùng của bạn trở thành nạn nhân của trò lừa đảo Click
Bạn đã bao giờ nghĩ về việc ai đó tạo iframe website của bạn trên trang của chúng? Làm cho người dùng trở thành nạn nhân? Vâng, kẻ tấn công có thể nhúng website của bạn lên website của chúng trong 1 iframe. Chúng có thể khéo léo đặt các control trong suốt trên website của bạn và thu thập các thông tin, tài khoản người dùng, và giúp chúng thực hiện các công việc không mong muốn như lấy tài khoản VISA…
Để ngăn chặn bạn sẽ sử dụng 1 kỹ thuật chặn iframe. Đoạn script dưới đây sẽ không cho phép website của bạn được nhúng trong 1 iframe. Nó có thể đặt trong master page với WebForm và Layout.cshtml với ASP.NET MVC.
<script type="text/javascript" language="javascript">
//Check if the top location is same as the current location
if (top.location.hostname != self.location.hostname) {
//If not then set the top to you current
top.location.href = self.location.href;
}
</script>
Bổ sung vào đoạn code trên, bạn đừng quên thêm header dưới đây để thông báo cho trình duyệt từ chối đưa website của bạn voà khung iframe. Điều này giúp cho các trình duyệt ngoại trừ các trình duyệt IE với phiên bản dưới 8. Header nên được thêm vào file Global.asax trong sự kiện Application_Start
protected void Application_Start(object sender, EventArgs e)
{
HttpContext.Current.Response.AddHeader("x-frame-options", "DENY");
}
Tạo danh sách các ký tự được phép trên Request URL
Dù bạn có nhiều các kỹ thuật để thực hiện việc bảo mật trong ứng dụng, nhưng quan trọng nhất là ngăn chặn dữ liệu bẩn từ người dùng nhập vào website của bạn đầu tiên. Hầu hết các cuộc tấn công xảy ra thông qua giá trị query string từ URL. Nó là một kỹ thuật quan trọng nhất định nghĩa một thành phần chung giống HttpModule cho URL. Chúng sẽ thanh lọc toàn bộ URL với tập hợp các ký tự cho phép giống như danh sách trắng, và bỏ hết những ký tự không nằm trong danh sách này.
Điều quan trọng là bạn biết rằng danh sách đen không thực sự rõ ràng vì chúng có thể được các hacker vượt qua dễ dàng.
Encoding dữ liệu
Khi xử lý và gửi dữ liệu trong response, nó được lấy từ bên ngoài vùng chúng ta tin tưởng nên phải luôn luôn được encode. Kiểu mã hoá có thể khác nhau dựa trên việc sử dụng của dữ liệu không tin tưởng. Ví dụ thực hiện HtmlEndcode cho dữ liệu được gửi về client.
Label1.Text = Server.HtmlEncode(Request.QueryString["BadValue"]);
Encoding dữ liệu sẽ làm cho các XSS script của hacker bị vô hiệu hoá và ngăn chúng thực thi. Microsoft đã đưa ra thư viện AntiXss, chúng cung cấp các cách thức encoding tinh vi hơn bao gồm JavascriptEndcode.
Sử dụng Cookies
Là một web developer bạn nên hết sức cẩn thận khi sử dụng cookies, chúng có thể mở ra một back door cho hacker đột nhập vào ứng dụng. Hãy tuân thủ 2 quy tắc sau khi sử dụng cookie để lưu trữ thông tin:
1. Nếu website của bạn được hỗ tợ SSL? Bạn chắc rằng cookie của bạn đã được bảo mật. Điều này chỉ có sẵn khi bạn sử dụng phương thức SSL
HttpCookie cookie = new HttpCookie("MySecureCookie");
cookie.Value = "This is a PII information";
cookie.Secure = true;
2. Nếu website của bạn không được cài đặt SSL bạn phải luôn luôn mã hoá giá trị sử dụng các cơ chế mã hoá mạnh như AES 256 và lưu trữ chúng trong cookie.
Bảo mật lời gọi Service (WCF / Web Service)
Bạn đã bao giờ cung cấp 1 WCF service API thông qua basicHttpBinding? Hãy suy nghĩ lại bởi vì các dữ liệu được truyền qua sẽ ở dạng text thông thường và bất cứ kẻ xấu nào sẽ có thể bắt các request và giả lập dễ dàng. Sử dụng wsHttpBinding, dữ liệu sẽ được truyền đi dưới dạng mã hoá, giúp cho việc xâm nhập khó khăn hơn.
Mặc dù bạn đã làm rất nhiều các cơ chế bảo mật cho WCF hay Web Service, nhưng cách tốt nhất vẫn là cài đặt các dịch vụ này trên 1 hosting có SSL.
Không bao giờ triển khai với debug=”true”
Một đề xuất nghiêm túc là không bao giờ được triển khai ứng dụng của bạn lên môi trường thật với mode là debug=”true” trong web.config. Điều này sẽ có hậu quả lớn đến hiệu năng và bảo mật của ứng dụng.
Nó có thể làm rò rỉ nhiều thông tin cho kẻ tấn công ví dụ như thông tin debug stack trace trong sự kiện không được try catch khi gặp exception. Điều này sẽ là thông tin quý giá cho kẻ tấn công.
<system.web>
<compilation debug="false" targetFramework="4.0" />
</system.web>
Suy nghĩ về việc tắt ViewStateMAC?
Tắt ViewStateMAC sẽ tạo 1 kẽ hở bảo mật trong ứng dụng ASP.NET của bạn nếu bạn đang sử dụng ViewState trên trang web. Kẻ tấn công sẽ có thể chặn và đọc mã hoá 64bit và sửa chúng làm những việc xấu. Việc bật ViewStateMAC sẽ đảm bảo rằng giá trị ViewState sẽ không chỉ được mã hoá mà còn được mã hoá sử dụng một secret key.
<pages enableViewStateMac="true"></pages>
Tôi hy vọng bài viết này sẽ có ích cho các nhà phát triển, giúp cho ứng dụng của bạn bảo mật hơn và ngăn chặn khả năng tấn công tốt hơn.
Trích nguồn từ: www.codeguru.com
Bài viết liên quan
eMudhra và lỗ hổng khóa yếu: dấu vết khai thác và tiến độ vá lỗi
Cloudflare ghi nhận khoảng 22.000 lần bắt tay TLS dùng khóa yếu của eMudhra, phần lớn bị chặn nhờ vá lỗi kịp thời; eMudhra tuyên bố rời thị trường CA công cộng.
Đọc thêm
Lỗ hổng CVSS 10.0 trong LXD và MicroCloud cho phép giả mạo client tin cậy mà không cần khóa riêng
Lỗ hổng nghiêm trọng CVE-2026-112816 trong LXD và MicroCloud của Canonical cho phép kẻ tấn công đăng nhập với tư cách client tin cậy chỉ với chứng chỉ công khai, đạt điểm CVSS tối đa 10.0. Canonical đã phát hành bản vá.
Đọc thêm
NetamLoader tấn công hệ thống Windows 10 của chính phủ châu Á qua .NET injection
Kaspersky phát hiện chuỗi lây nhiễm tinh vi nhắm vào bản Windows 10 tùy chỉnh dành riêng cho cơ quan chính phủ ở châu Á, sử dụng framework .NET có tên NetamLoader.
Đọc thêm
Cloudflare ghi nhận 18,2 triệu cuộc tấn công DDoS lớp mạng trong quý 3, tăng 38%
Cloudflare cho biết đã tự động chặn 18,2 triệu cuộc tấn công DDoS lớp mạng và 14,4 nghìn tỷ yêu cầu HTTP DDoS trong quý 3/2026, tương đương khoảng 8.226 cuộc tấn công mỗi giờ.
Đọc thêm
Lỗ hổng link chia sẻ ChatGPT có thể chạy mã độc trong phiên đăng nhập và đọc hội thoại riêng tư
Các nhà nghiên cứu tại Parameter phát hiện một link chia sẻ ChatGPT độc hại có thể chạy mã của kẻ tấn công trong phiên đăng nhập của nạn nhân, đọc hội thoại riêng tư. OpenAI đã vá lỗi và trả 5.000 USD tiền thưởng.
Đọc thêm
Tin tặc kết hợp ba lỗ hổng Ivanti Connect Secure để chiếm quyền root không cần xác thực
CISA đưa hai lỗ hổng Ivanti Connect Secure vào danh mục KEV sau khi bị khai thác thực tế, trong chuỗi khai thác ba lỗ hổng cho phép chiếm quyền root mà không cần xác thực.
Đọc thêm
Làm việc với User Secrets trong ứng dụng ASP.NET Core
Chúng ta tìm hiểu cách làm việc với UserSecrets để quản lý các thông tin cấu hình nhạy cảm và bí mật của ứng dụng.
Đọc thêm
Tổng quan các loại thuật toán mã hoá dữ liệu
Bài viết rất hay giới thiệu về tổng quan các loại thuật toán mã hoá dữ liệu dành cho những bạn nào muốn tìm hiểu về thuật toán mã hoá.
Đọc thêm
Series bảo mật trong ASP.NET MVC - 5: Rỏ rỉ thông tin máy chủ
Các thông tin về phiên bản được sử dụng bởi một kẻ tấn công sẽ khai thác để tấn công vào hệ thống.
Đọc thêm
Series bảo mật trong ASP.NET MVC - 4: Upload các tệp tin có hại
Qua 3 bài trước chúng ta đã từng tìm hiểu về cách bảo vệ tất cả các trường nhập liệu. Nhưng chúng ta đã bỏ qua một trường chính là trường File Upload
Đọc thêm