2017-08-16 140 views
0

我正在使用最新版本的ASP.NET MVC 5.2.3創建一個Web應用程序。我只關心XSS攻擊。我發現在ASP.NET Core中完全可以避免這種攻擊,XSS和這個框架完全令人驚訝,但它缺少我需要的第三方項目。這是我的擔心。我已經啓用了自定義錯誤,但是我目前禁用它進行測試。如何從XSS保護或保護ASP.NET MVC?

但我想確保這也會被捕獲。

  1. 輸入驗證通過。避免此異常或錯誤。

從客戶端(名稱=「」)檢測到有潛在危險的Request.Form值。

使用,[AllowHtml]屬性這很好或使用AntiXss庫。

  1. 但是,從URL。例如網址,

    http://localhost:54642/Employees/

    http://localhost:54642/Employees/?a=<script> 
    

link or url

此錯誤謹

有潛在危險的Request的值是由客戶端(<)檢測。

所以我的解決方案是從Web.config啓用它,然後它的工作!

但特洛伊亨特從他的教程說,這是不是這個錯誤的好或更好的做法。所以我決定從這次XSS攻擊中尋找最好的解決方案。

回答

2

在我的形式我通常添加該防僞標記

@Html.AntiForgeryToken() 

然後我控制器上我確信驗證令牌

[ValidateAntiForgeryToken] 

也傳遞變量或數據時,我總是聲明正確的變量。不管怎麼說,如果其會員區頁面,您可以隨時限制訪問正確的成員角色,例如像

[Authorize] // for registered user 

    or more filtered 

    [Authorize(Roles = "SUBSCRIBER.VIEW")] 

下面是僅適用於.NET 4.5及以上

// web.config 
    <system.Web> 
    <httpRuntime targetFramework="4.5" /> 
    </system.Web> 

// enabling anti-xss 
    <httpRuntime targetFramework="4.5" encoderType="System.Web.Security.AntiXss.AntiXssEncoder,System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 

請求驗證驗證懶在被引入ASP.NET 4.5,我 只是做了一些測試,看起來懶惰的驗證是 啓用,無論你如何設置「requestValidationMode」,在 你已經安裝了4.5框架。

+0

謝謝,但這是針對CSRF攻擊的,我需要XSS安全。 – Patrick

+0

沒有標籤[AllowHtml]你的輸入它應該已經保護你的表單,但如果你仍然不信任你的表單,你可以使用這個AntiXss.AntiXssEncoder。 –

+0

爲url保護示例,localhost:8080/Employees/

0

查看OWASP網站。以下是我在webapi應用程序的web.config文件中的system.web中添加的常用內容。

<httpProtocol> 
    <customHeaders> 
    <remove name="Server" /> 
    <remove name="X-Powered-By" /> 
    <remove name="X-Frame-Options" /> 
    <remove name="X-XSS-Protection" /> 
    <remove name="X-Content-Type-Options" /> 
    <remove name="Cache-Control" /> 
    <remove name="Pragma" /> 
    <remove name="Expires" /> 
    <remove name="Content-Security-Policy"/> 
    <clear /> 
    <add name="X-Frame-Options" value="DENY" /> 
    <add name="X-XSS-Protection" value="1; mode=block"/> 
    <add name="X-Content-Type-Options" value="nosniff" /> 
    <add name="Cache-Control" value="no-cache, no-store" /> 
    <add name="Pragma" value="no-cache" /> 
    <add name="Expires" value="Sun, 1 Jan 2017 00:00:00 UTC" /> 
    <add name="Content-Security-Policy" value="default-src 'self' 'unsafe-inline' data; img-src https://*;"/> 
    </customHeaders> 
</httpProtocol>