Files
Facilitor/APPL/Shared/csp_report.asp

85 lines
2.5 KiB
Plaintext

<%@language="javascript"%>
<% /*
$Revision$
$Id$
File: Shared/csp_report.asp
Description: FUTURE USE: De browser rapporteert een overtreding van de Content-Security-Policy aan deze pagina
Momenteel is report-uri deprecated en bovendien niet goed geimplementeerd in Firefox (https://bugzilla.mozilla.org/show_bug.cgi?id=1140266)
Dat laatste zorgt ervoor dat Facilitor de pagina niet geauthenticeerd kan aanvragen waardoor het eerder een risico is dan dat het wat oplost.
Het alternatief; report-to, is momenteel nog niet voldoende door browsers ondersteund.
Daarom laten we het rapporteren van CSP violations nog even achterwege.
Note: De ingestelde CSP-header heeft iets geblokkeerd, dat loggen we hier
*/
DOCTYPE_Disable = 1;
%>
<!-- #include file="../Shared/common.inc" -->
<%
// Kopie uit api.inc
function BytesToStr(bytes)
{
var stream = Server.CreateObject("ADODB.STREAM");
stream.type = 1;
stream.open;
stream.write(bytes);
stream.position = 0;
stream.type = 2; // Text
stream.charset = "utf-8";
// Mogelijk was het nog utf-8. Dat is riskant met unicode quotes (FCLT#60591)
// Daarom expliciete conversie
var win1252Stream = new ActiveXObject("ADODB.Stream");
win1252Stream.Open();
win1252Stream.CharSet = "Windows-1252"; // het doel
stream.copyTo(win1252Stream);
stream.close;
win1252Stream.position = 0;
var ReadBytes = 131072; // optimaal volgens https://docs.microsoft.com/en-us/sql/ado/reference/ado-api/readtext-method?view=sql-server-ver15
var sOut = "";
while (!win1252Stream.EOS)
{
sOut = sOut + win1252Stream.ReadText(ReadBytes);
}
win1252Stream.close;
return sOut;
}
function RequestJSON()
{
var raw_request;
if (Request.TotalBytes > 0)
{
var lngBytesCount = Request.TotalBytes;
raw_request = BytesToStr(Request.BinaryRead(lngBytesCount));
}
try
{
var csp_report = JSON.parse(raw_request);
}
catch (e)
{
__DoLog("JSON.parse faalt met: {0}<br>{1}".format(e.description, raw_request), "#f00");
return {};
}
return csp_report;
}
var csp_report = RequestJSON();
__DoLog("Content Security Policy overtreding, S(\"csp-header\") te streng afgesteld?", "#f00");
__DoLog(csp_report);
Response.Status = 204; // No content
Response.End;
%>
<% ASPPAGE_END(); %>