|
|
@@ -124,6 +124,13 @@ func wsHandshakeValidator(allowedOrigins []string) func(*websocket.Config, *http
|
|
|
log.Debug(fmt.Sprintf("Allowed origin(s) for WS RPC interface %v", origins.ToSlice()))
|
|
|
|
|
|
f := func(cfg *websocket.Config, req *http.Request) error {
|
|
|
+ // Skip origin verification if no Origin header is present. The origin check
|
|
|
+ // is supposed to protect against browser based attacks. Browsers always set
|
|
|
+ // Origin. Non-browser software can put anything in origin and checking it doesn't
|
|
|
+ // provide additional security.
|
|
|
+ if _, ok := req.Header["Origin"]; !ok {
|
|
|
+ return
|
|
|
+ }
|
|
|
// Verify origin against whitelist.
|
|
|
origin := strings.ToLower(req.Header.Get("Origin"))
|
|
|
if allowAllOrigins || origins.Contains(origin) {
|