2016-03-07 11 views
10

Ich bin auf der Suche nach einer guten Möglichkeit, einen relativ starken Content-Security-Policy-Header für meine ASP.NET WebForms-Anwendung zu implementieren. Ich speichere so viel JavaScript wie möglich in Dateien statt inline, aber standardmäßig injiziert WebForms viel Inline-Skript für Dinge so einfach wie Formularübergabe und grundlegende AJAX-Aufrufe.Content-Sicherheitsrichtlinie in ASP.NET WebForms

MVC hat einige einfache Möglichkeiten, Nonces zu implementieren, besonders mit Hilfe von Bibliotheken von Drittanbietern wie NWebsec, aber ich kann keine Methoden finden, sie mit WebForms zu implementieren. Ich hätte nicht einmal ein Problem mit Hashes, wenn es eine Möglichkeit gäbe, den Hash für jedes .NET injizierte Skript-Tag vorherzusagen und abzurufen.

Ich hasse es, den 'unsafe-inline' Wert zuzulassen. Es fühlt sich falsch an, eine so mächtige Sicherheitsfunktion auszuschalten. Gibt es einen vernünftigen Weg, um es in WebForms zu implementieren?

+0

Haben Sie jemals eine Antwort darauf gefunden, Andy? – Resource

+0

habe ich nicht. Ich habe sogar versucht, die Hilfe von [Troy Hunt] (https://www.troyhunt.com/) und [André Klingsheim] (http://www.dotnetnoob.com/) auf [Twitter] (https: // twitter .com/askrenes/status/705471606311800836), vergeblich. – Andy

Antwort

1

Ich hatte das gleiche Problem und traurig zu sagen, das war das Beste, was wir getan haben. Wir haben im Wesentlichen festgestellt, was wir verwenden und nicht verwenden. Wir mussten sogar einige unsichere Tests durchführen, weil wir Steuerungen von Drittanbietern verwendeten, die ohne sie nicht funktionieren konnten. Was wir mindestens bekommen, ist Anrufe auf externe URL zu vermeiden.

default-src 'self'; 
child-src 'self' 'unsafe-inline' 'unsafe-eval'; 
object-src 'none'; 
script-src 'self' 'unsafe-inline' 'unsafe-eval' https://www.google-analytics.com; 
img-src 'self' https://www.google-analytics.com; 
style-src 'self' 'unsafe-inline'