Cấu hình Web.config đơn giản giúp website an toàn


Khi lập trình web bằng ASP.NET hoặc Asp.net MVC, một thành phần rất quan trọng trong việc đảm bảo an toàn cho website là file web.config. Đây là file chứa các cấu hình cơ bản của website, tuy nhiên, các cấu hình mặc định của nó đôi khi tiềm ẩn nhiều nguy cơ an ninh.


Xóa customHeaders

<httpProtocol>
  <customHeaders>
    <remove name="X-Powered-By" />
    <remove name="X-AspNet-Version" />
    <remove name="X-AspNetMvc-Version" />
    <remove name="X-Powered-By-Plesk" />
    <remove name="Server" />
  </customHeaders>
</httpProtocol>

Ẩn đi thông tin cấu hình server đang sử dụng, giúp hạn chế một số thành phần xấu muốn tấn công

Cấu hình X-Frame-Options phòng chống tấn công Clickjacking

<httpProtocol>
  <customHeaders>
    <add name="X-Frame-Options" value="SAMEORIGIN" />
  </customHeaders>
</httpProtocol>

Bạn có thể sử dụng tùy chọn X-Frame-Options để thông báo cho trình duyệt cho phép website của bạn có được nhúng vào bên trong các thẻ frame hoặc iframe hay không. Bạn có thể sử dụng tính năng này để phòng chống các cuộc tấn công clickjacking vốn rất phổ biến hiện nay.

X-Frame-Options có 3 chế độ như sau:

  • DENY - Không ai có thể đặt trang này vào một iframe
  • SAMEORIGIN - Trang chỉ có thể được hiển thị ở trong một iframe tạo bởi ai đó ở cùng một nguồn (same origin) với nó.
  • ALLOW-FROM - Chỉ định đường dẫn url có thể đặt trang này vào iframe

Cấu hình X-XSS-Protection chống tấn công Cross Site Scripting

<httpProtocol>
  <customHeaders>
    <add name="X-XSS-Protection" value="1; mode=block" />
  </customHeaders>
</httpProtocol>

Cross Site Scripting thường được viết tắt là XSS là người tấn công sẽ khiến cho trang web chạy một đoạn javascript độc hại:

  • X-XSS-Protection: 0 : tắt chế độ này
  • X-XSS-Protection: 1 : lọc bỏ các đoạn scrip ở trong request, nhưng vẫn hiển thị trang web
  • X-XSS-Protection: 1; mode=block : khi được kích hoạt sẽ vô hiệu hoàn toàn việc hiển thị trang web

Tắt thông báo lỗi

Bật mode = “On” hoặc “RemoteOnly”

<customErrors mode="On" defaultRedirect="Error.html">
   <error statusCode="403" redirect="NoAccess.html" />
   <error statusCode="404" redirect="FileNotFound.html" />
</customErrors>

Trong đó

  • Off: thông báo lỗi sẽ được hiển thị phía người dung
  • On: ko hiển thị thông báo lỗi
  • RemoteOnly: thông báo lỗi chỉ hiển thị phía server

Ngoài ra còn có cấu hình trang redirect mặc định khi có lỗi. Nếu ko để customErrors thì thông báo lỗi cũng ko đc hiển thị rõ ràng.

BỎ TRACE

<trace enabled="false" localOnly="true">

Khi để trace với tùy chọn là localOnly=”false”, bất kỳ ai cũng có thể vào trang trace.axd để xem danh sách các request.

TẮT DEBUG

<compilation debug="false">

HTTPCOOKIEONLY

<httpCookies httpOnlyCookies="true" />

Tùy chỉnh này ko cho truy cập tới cookie bằng các đoạn code phía Client, ngăn tấn công XSS. Chỉ có tác dụng khi dung HttpCookie.

MÃ HÓA VIEWSTATE

<system.web>
…
<machineKey validation="3DES"/>
…
</system.web>

MÃ HÓA CÁC THÀNH PHẦN TRONG WEB.CONFIG

B1: Cấp quyền cho account ASPNET truy xuất đến đối tượng chứa key RSA mặc định “NetFrameworkConfigurationKey”

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis –pa NetFrameworkConfigurationKey" "ASPNET"

B2: Mã hóa các thành phần

aspnet_regiis -pe "connectionStrings" -app "/MyApplication"

-pe: thành phần -app: tên thư mục ứng dụng

Giải mã:

aspnet_regiis -pd "connectionStrings" -app "/MyApplication"

Chia sẽ bài viết :