通过net.createServer创建了一个TCP的server。这个server怎样保证它的安全? 例如,垃圾消息,恶意连接等。 我想到的几种方法,不知道有没有更好的一些解决方案,希望大家赐教。 1、逻辑判断 对恶意传送的数据在逻辑上进行判断,规避垃圾数据。但这样还是会浪费连接资源。只是避免的方法之一。 2、fail2ban 通过fail2ban分析日志来检测不良IP,将这些IP打入黑名单。 但这种方案是发生在恶意连接之后,对首次恶意攻击没有抵抗能力,也许阀值会有效果,但已经浪费了很多系统资源,我觉得fail2ban只是最后的一道保险。 3、TLS 就算是TLS,如果是对外的服务,那么证书很容易就落入到做坏事的人手里。与普通tcp没有差别。没什么意义。 4、TIME_WAIT API中描述(Note: All sockets in Node set SO_REUSEADDR already),所以这个比较好解决。 5、setKeepAlive 设定Keepalive为false。这样就算client连接不关闭,也不会长期占用连接。(通过server.maxConnections测试,恶意在客户端不关闭的连接不会对socketserver造成多大影响,只是短时间的拥堵)
刚玩node没几天,有些知识还没到位,所以见识可能也短了点。希望有经验的朋友多多赐教,提供一些更好的方案。