在WINDOWS的SOCKET服务器应用的编程中,如下的语句或许比比都是: #lJF$
s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); g1&GX(4[
^]aDLjD
saddr.sin_family = AF_INET; P6IhpB59
YdeSJ(:
saddr.sin_addr.s_addr = htonl(INADDR_ANY); 2H]&3kM3X
&<!I]:Y
bind(s,(SOCKADDR *)&saddr,sizeof(saddr)); >TL0hBaaR
VaQ}XM
其实这当中存在在非常大的安全隐患,因为在winsock的实现中,对于服务器的绑定是可以多重绑定的,在确定多重绑定使用谁的时候,根据一条原则是谁的指定最明确则将包递交给谁,而且没有权限之分,也就是说低级权限的用户是可以重绑定在高级权限如服务启动的端口上的,这是非常重大的一个安全隐患。 [bGdg
Q^mJ _~
这意味着什么?意味着可以进行如下的攻击: hTg%T#m
Kx<