私はhttps://github.com/lemmingzshadow/php-websocket/を使用しています
一部のドメインを許可できlocalhost
ます。ローカル サーバーを指すドメインを許可しました。しかし、自分のコンピューターにサーバーを持っている他の誰かが、自分の localhost サーバーのスクリプトを使用して (私のドメインを介して) 私の websocket に接続できるのではないかと思います。
関連するコードは次のとおりです。
-> server/server.php
$server->setAllowedOrigin('localhost');
$server->setAllowedOrigin('mydomain.com');
-> サーバー/lib/WebSocket/Connection.php
// check origin:
if($this->server->getCheckOrigin() === true)
{
$origin = (isset($headers['Sec-WebSocket-Origin'])) ? $headers['Sec-WebSocket-Origin'] : false;
$origin = (isset($headers['Origin'])) ? $headers['Origin'] : $origin;
if($origin === false)
{
$this->log('No origin provided.');
$this->sendHttpResponse(401);
stream_socket_shutdown($this->socket, STREAM_SHUT_RDWR);
$this->server->removeClientOnError($this);
return false;
}
if(empty($origin))
{
$this->log('Empty origin provided.');
$this->sendHttpResponse(401);
stream_socket_shutdown($this->socket, STREAM_SHUT_RDWR);
$this->server->removeClientOnError($this);
return false;
}
if($this->server->checkOrigin($origin) === false)
{
$this->log('Invalid origin provided.');
$this->sendHttpResponse(401);
stream_socket_shutdown($this->socket, STREAM_SHUT_RDWR);
$this->server->removeClientOnError($this);
return false;
}
}
-> サーバー/lib/WebSocket/Server.php
public function checkOrigin($domain)
{
$domain = str_replace('http://', '', $domain);
$domain = str_replace('https://', '', $domain);
$domain = str_replace('www.', '', $domain);
$domain = str_replace('/', '', $domain);
return isset($this->_allowedOrigins[$domain]);
}
public function setAllowedOrigin($domain)
{
$domain = str_replace('http://', '', $domain);
$domain = str_replace('www.', '', $domain);
$domain = (strpos($domain, '/') !== false) ? substr($domain, 0, strpos($domain, '/')) : $domain;
if(empty($domain))
{
return false;
}
$this->_allowedOrigins[$domain] = true;
return true;
}
編集:
たぶん、私は十分に明確ではありませんでした。誰でも Websocket に接続できるようにしたいのですが、それは自分のドメイン (またはローカルホスト) にいる場合に限られます。たとえば、AJAX の同じオリジン ポリシーのようなものです。
私の心配は、ローカルホストを許可すると、他のコンピューターの他のすべてのローカルホストも許可される可能性があることです。