<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" pageOutput="false" requestLimit="5" traceMode="SortByTime" mostRecent="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"
When customers are using a Web Farm setup and they need to recycle the application pool for each server once or even multiple times a day. Often, the servers start throwing active sync errors and one of the 2 (or more) web head servers will begin to not load the page correctly.