Như bạn đã đề cập, Lọc yêu cầu của IIS sẽ có thể giúp bạn.
Bạn đang sử dụng trang web asp.net MVC, vì vậy mọi URL được yêu cầu đều được kiểm tra đối với tất cả các tuyến đã định cấu hình. Điều này có nghĩa là lớp ứng dụng của bạn được sử dụng để phản hồi 404 cho yêu cầu.
Lý tưởng nhất là bạn muốn có 404 sớm hơn trong đường dẫn yêu cầu của mình trước khi lớp ứng dụng của bạn được gọi.
Có một số tùy chọn:
<system.webServer>
<security>
<requestFiltering>
<denyUrlSequences>
<add sequence="/system/login" />
</denyUrlSequences>
<hiddenSegments>
<add segment="system" />
</hiddenSegments>
<filteringRules>
<filteringRule name="systemLogin" scanUrl="true" scanQueryString="false">
<denyStrings>
<add string="system/login" />
</denyStrings>
</filteringRule>
</filteringRules>
</requestFiltering>
</security>
</system.webServer>
Bạn chỉ nên chơi xung quanh cái nào phù hợp nhất với mình và không ảnh hưởng đến ứng dụng của riêng bạn.
Nếu bật Truy tìm yêu cầu không thành công, bạn có thể thấy vị trí trong đường dẫn mà phản hồi 404 đã được tạo. Trong thử nghiệm của tôi khi không sử dụng bộ lọc yêu cầu, 404 được tạo ở vị trí 232 trong đường ống, bằng cách sử dụng bộ lọc yêu cầu, nó được tạo ở vị trí 72 sớm hơn rất nhiều và trước khi lớp ứng dụng của bạn được gọi.
Có, tường lửa web trước máy chủ IIS của bạn thậm chí còn tốt hơn nhưng thiếu IIS có thể phát hiện các yêu cầu này trước khi chúng đến được ứng dụng của bạn.
Đảm bảo các trang lỗi tùy chỉnh của bạn được định cấu hình chính xác và không nói gì khác ngoài 404.