限制套接字服务器访问

时间:2013-12-23 14:41:22

标签: php security sockets

这是安全问题。我有一个套接字服务器只能从同一台服务器访问,换句话说,只能从 localhost 访问。我需要以某种方式检查尝试连接的远程用户是否不是局外人。目前我已经提出:

socket_getpeername($current_socket, $client_address, $client_port);

if( $client_address == '127.0.0.1' )
{
   //allow
}

但是这种方法并不是最好的方法,因为在继续之前我需要socket_accept() 任何用户。有人知道如何处理吗?

2 个答案:

答案 0 :(得分:3)

接受套接字然后断开连接是完全可以接受的。

如果您不喜欢它,可以在操作系统中设置防火墙规则,以仅允许来自localhost的连接。

答案 1 :(得分:0)

我的建议是让你的套接字只能收听127.0.0.1。这样它只能从localhost连接。

我假设您使用的是stream_socket_server()

$socket = stream_socket_server("udp://127.0.0.1:1113", $errno, $errstr, STREAM_SERVER_BIND);
if (!$socket) {
    die("$errstr ($errno)");
}