Author: markt
Date: Wed Feb 8 08:54:07 2012
New Revision: 1241822
URL: http://svn.apache.org/viewvc?rev=1241822&view=rev
Log:
Provide a hook to check the origin.
Based on a patch by Johno Crawford.
Modified:
tomcat/trunk/java/org/apache/catalina/websocket/WebSocketServlet.java
Modified: tomcat/trunk/java/org/apache/catalina/websocket/WebSocketServlet.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/websocket/WebSocketServlet.java?rev=1241822&r1=1241821&r2=1241822&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/websocket/WebSocketServlet.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/websocket/WebSocketServlet.java Wed
Feb 8 08:54:07 2012
@@ -90,8 +90,13 @@ public abstract class WebSocketServlet e
return;
}
- // TODO Read client handshake - Origin
- // Sec-WebSocket-Protocol
+ String origin = req.getHeader("Origin");
+ if (!verifyOrigin(origin)) {
+ resp.sendError(HttpServletResponse.SC_FORBIDDEN);
+ return;
+ }
+
+ // TODO Read client handshake - Sec-WebSocket-Protocol
// Sec-WebSocket-Extensions
// TODO Extensions require the ability to specify something (API TBD)
@@ -143,5 +148,20 @@ public abstract class WebSocketServlet e
}
}
+ /**
+ * Intended to be overridden by sub-classes that wish to verify the origin
+ * of a WebSocket request before processing it.
+ *
+ * @param origin The value of the origin header from the request which
+ * may be <code>null</code>
+ *
+ * @return <code>true</code> to accept the request. <code>false</code> to
+ * reject it. This default implementation always returns
+ * <code>true</code>.
+ */
+ protected boolean verifyOrigin(String origin) {
+ return true;
+ }
+
protected abstract StreamInbound createWebSocketInbound();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]