問題:aspnet core2如何使用csp防止xss的攻擊javascript
方法:css
public void ConfigureServices( IServiceCollection services) { services.AddMvc(); } public void Configure( IApplicationBuilder app, IHostingEnvironment env) { app.UseDeveloperExceptionPage(); app.Use(async (context, next) => { context.Response.Headers.Add( "Content-Security-Policy", "script-src 'self'; " + "style-src 'self'; " + "img-src 'self'"); await next(); }); app.UseStaticFiles(); app.UseMvcWithDefaultRoute(); } }
_Layout頁面 (普通html頁面也能夠,不必定是mvc)添加以下代碼html
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>@ViewBag.Title</title> <link rel="stylesheet" href="~/css/site.css" /> <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.5/css/bootstrap.min.css" /> </head> <body> <img src="~/img/site-banner.jpg" /> <img src="https://media-www-asp.azureedge.net/media/5245130/home-hero-2.png" /> <div> @RenderBody() </div> <script src="~/js/site.js"></script> <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.2.1.min.js"></script> </body> </html>
按f12調試 ,會看到相似下面的信息,bootstrap.min.css文件被瀏覽器拒絕了。java
bootstrap.min.css blocked:cspjquery
這裏也有介紹 https://www.zhihu.com/question/21979782
CSP指的是內容安全策略,爲了緩解很大一部分潛在的跨站腳本問題,瀏覽器的擴展程序系統引入了內容安全策略(CSP)的通常概念。這將引入一些至關嚴格的策略,會使擴展程序在默認狀況下更加安全,開發者能夠建立並強制應用一些規則,管理網站容許加載的內容。linux
看上面的代碼就知道了,就是在header里加了Content-Security-Policy的安全策略。git
1 : 容許全部
2 ‘self’: 網站自身,記得有單引號
3 Host: 服務器。能夠設置其餘的服務器地址,ip和域名均可以,如http://.foo.com cdn的資源能夠這麼作。
4 ‘unsafe-line’: 不安全的行內代碼。如github
<a href="#" onclick="al()">保存</a>
5 ‘nonce-[base64-value]’:allow inline scripts with a specific nonce (number used once). The nonce should be encrypted and unique for every HTTP request/response .沒用過。ajax
script-src: JavaScript 腳本
style-src: css樣式表
img-src: 圖片地址
connect-src: ajax調用請求
font-src: 字體
object-src: bootstrap