这是安全问题。我有一个套接字服务器只能从同一台服务器访问,换句话说,只能从 localhost 访问。我需要以某种方式检查尝试连接的远程用户是否不是局外人。目前我已经提出:
socket_getpeername($current_socket, $client_address, $client_port);
if( $client_address == '127.0.0.1' )
{
//allow
}
但是这种方法并不是最好的方法,因为在继续之前我需要socket_accept()
任何用户。有人知道如何处理吗?
答案 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)");
}