Khi lập trình web bằng ASP.NET, 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. Bài viết này chỉ ra một số cấu hình để giúp website của bạn loại bỏ những nguy cơ này.
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"