diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 9dc2b6658..6ed333882 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -414,7 +414,7 @@ public class I2PSnarkServlet extends BasicServlet { resp.setContentType("text/html; charset=UTF-8"); // "no-store, max-age=0" forces all our images to be reloaded on ajax refresh resp.setHeader("Cache-Control", "max-age=86400, no-cache, must-revalidate"); - resp.setHeader("Content-Security-Policy", "default-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'"); + resp.setHeader("Content-Security-Policy", "default-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'; form-action 'self'; frame-ancestors 'self'; object-src 'none'"); resp.setDateHeader("Expires", 86400); resp.setHeader("Pragma", "no-cache"); resp.setHeader("X-Frame-Options", "SAMEORIGIN"); diff --git a/apps/i2ptunnel/jsp/edit.jsp b/apps/i2ptunnel/jsp/edit.jsp index e92b2ff56..3b341cc3c 100644 --- a/apps/i2ptunnel/jsp/edit.jsp +++ b/apps/i2ptunnel/jsp/edit.jsp @@ -3,7 +3,7 @@ response.setHeader("X-Frame-Options", "SAMEORIGIN"); // edit pages need script for the delete button 'are you sure' - response.setHeader("Content-Security-Policy", "default-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'"); + response.setHeader("Content-Security-Policy", "default-src 'self'; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline'; form-action 'self'; frame-ancestors 'self'; object-src 'none'; media-src 'none'"); response.setHeader("X-XSS-Protection", "1; mode=block"); response.setHeader("X-Content-Type-Options", "nosniff"); response.setHeader("Referrer-Policy", "no-referrer"); diff --git a/apps/i2ptunnel/jsp/headers.jsi b/apps/i2ptunnel/jsp/headers.jsi new file mode 100644 index 000000000..1ce03c28f --- /dev/null +++ b/apps/i2ptunnel/jsp/headers.jsi @@ -0,0 +1,15 @@ +<% + // NOTE: Do the header carefully so there is no whitespace before the diff --git a/apps/i2ptunnel/jsp/index.jsp b/apps/i2ptunnel/jsp/index.jsp index 5e98a0a49..c00741d6a 100644 --- a/apps/i2ptunnel/jsp/index.jsp +++ b/apps/i2ptunnel/jsp/index.jsp @@ -1,17 +1,4 @@ -<% - // NOTE: Do the header carefully so there is no whitespace before the <%@page pageEncoding="UTF-8" %><%@page trimDirectiveWhitespaces="true" %><%@page contentType="text/html" import="net.i2p.i2ptunnel.web.IndexBean" diff --git a/apps/i2ptunnel/jsp/register.jsp b/apps/i2ptunnel/jsp/register.jsp index 91bcf7b78..57fa92512 100644 --- a/apps/i2ptunnel/jsp/register.jsp +++ b/apps/i2ptunnel/jsp/register.jsp @@ -1,13 +1,4 @@ -<% - // NOTE: Do the header carefully so there is no whitespace before the <%@page pageEncoding="UTF-8" %><%@page contentType="text/html" import="java.io.InputStream,net.i2p.i2ptunnel.web.EditBean,net.i2p.servlet.RequestWrapper,net.i2p.client.I2PSessionException,net.i2p.client.naming.HostTxtEntry,net.i2p.data.PrivateKeyFile,net.i2p.data.SigningPrivateKey,net.i2p.util.OrderedProperties" %><%@page diff --git a/apps/i2ptunnel/jsp/ssl.jsp b/apps/i2ptunnel/jsp/ssl.jsp index c2427d867..f285eaab8 100644 --- a/apps/i2ptunnel/jsp/ssl.jsp +++ b/apps/i2ptunnel/jsp/ssl.jsp @@ -1,13 +1,4 @@ -<% - // NOTE: Do the header carefully so there is no whitespace before the <%@page pageEncoding="UTF-8" %><%@page contentType="text/html" import="java.io.File,java.io.IOException,net.i2p.crypto.KeyStoreUtil,net.i2p.data.DataHelper,net.i2p.jetty.JettyXmlConfigurationParser" %><%@page diff --git a/apps/i2ptunnel/jsp/wizard.jsp b/apps/i2ptunnel/jsp/wizard.jsp index b02bd4694..d919698b3 100644 --- a/apps/i2ptunnel/jsp/wizard.jsp +++ b/apps/i2ptunnel/jsp/wizard.jsp @@ -1,17 +1,4 @@ -<% - // NOTE: Do the header carefully so there is no whitespace before the <%@page pageEncoding="UTF-8" %><%@page contentType="text/html" import="net.i2p.i2ptunnel.web.EditBean" %> diff --git a/apps/jetty/java/src/net/i2p/servlet/ErrorServlet.java b/apps/jetty/java/src/net/i2p/servlet/ErrorServlet.java index fb4922721..aa0ce5704 100644 --- a/apps/jetty/java/src/net/i2p/servlet/ErrorServlet.java +++ b/apps/jetty/java/src/net/i2p/servlet/ErrorServlet.java @@ -90,7 +90,7 @@ public class ErrorServlet extends HttpServlet { resp.setDateHeader("Expires", 0); resp.setHeader("Cache-Control", "no-store, max-age=0, no-cache, must-revalidate"); resp.setHeader("Pragma", "no-cache"); - resp.setHeader("Content-Security-Policy", "default-src 'self'; script-src 'none'"); + resp.setHeader("Content-Security-Policy", "default-src 'self'; script-src 'none'; form-action 'none'; frame-ancestors 'self'; object-src 'none'; media-src 'none'"); Integer ERROR_CODE = (Integer) req.getAttribute("javax.servlet.error.status_code"); String ERROR_URI = (String) req.getAttribute("javax.servlet.error.request_uri"); String ERROR_MESSAGE = (String) req.getAttribute("javax.servlet.error.message"); @@ -114,6 +114,7 @@ public class ErrorServlet extends HttpServlet { ERROR_URI.endsWith(".ico") || ERROR_URI.endsWith(".svg") || ERROR_URI.endsWith(".txt") || + ERROR_URI.endsWith(".js") || ERROR_URI.endsWith(".css"))) { // keep it simple resp.setContentType("text/plain"); diff --git a/apps/routerconsole/jsp/certs.jsp b/apps/routerconsole/jsp/certs.jsp index c7658af96..0f19f0979 100644 --- a/apps/routerconsole/jsp/certs.jsp +++ b/apps/routerconsole/jsp/certs.jsp @@ -5,9 +5,8 @@
<%@include file="css.jsi" %> <%=intl.title("Certificates")%> - <%@include file="summaryajax.jsi" %> - + <%@include file="summary.jsi" %>