mina自帶了乙個黑名單過濾器blacklistfilter,可過濾黑名單列表中的網路連線。用來防止非法的客戶端訪問。
但在某些應用場景裡需要設定白名單,只接收某些指定ip的客戶端發來的資料。這就需要實現白名單功能。
我們可以自己實現白名單過濾器,方法很簡單只需仿照blacklistfilter做些修改即可。
我自己寫的whitefilter,**如下:
/**
* whitelist filter (based on mina's blacklist filter).
*/public class whitelistfilter extends iofilteradapter
whitelist.clear();
for (inetaddress addr : addresses)
} public void setsubnetwhitelist(subnet subnets)
whitelist.clear();
for (subnet subnet : subnets)
} public void setwhitelist(iterableaddresses)
whitelist.clear();
for (inetaddress address : addresses)
} public void setsubnetwhitelist(iterablesubnets)
whitelist.clear();
for (subnet subnet : subnets)
} public void allow(inetaddress address)
allow(new subnet(address, 32));
} public void allow(subnet subnet)
whitelist.add(subnet);
} public void disallow(inetaddress address)
disallow(new subnet(address, 32));
} public void disallow(subnet subnet)
whitelist.remove(subnet);
} @override
public void sessioncreated(nextfilter nextfilter, iosession session) else
} @override
public void sessionopened(nextfilter nextfilter, iosession session) throws exception else
} @override
public void sessionclosed(nextfilter nextfilter, iosession session) throws exception else
} @override
public void sessionidle(nextfilter nextfilter, iosession session, idlestatus status) throws exception else
} @override
public void messagereceived(nextfilter nextfilter, iosession session, object message) else
} @override
public void messagesent(nextfilter nextfilter, iosession session, writerequest writerequest) throws exception else
} private void blocksession(iosession session)
private boolean isallowed(iosession session)
}} return false;
}}
呼叫時要加入whitelist過濾器
ioacceptor acceptor = new niosocketacceptor();
whitelistfilter whitelistfilter=new whitelistfilter();
inetaddress address= new inetaddress[1];
address[0]=inetaddress.getbyname("192.168.136.123");
whitelistfilter.setwhitelist(address);
acceptor.getfilterchain().addfirst("white",whitelistfilter);
acceptor.getfilterchain().addlast("logger", new loggingfilter());
acceptor.getfilterchain().addlast("codec", new protocolcodecfilter(new textlinecodecfactory(charset.forname("gbk"))));
acceptor.sethandler(new serverhandler());
acceptor.getsessionconfig().setreadbuffersize(2048);
acceptor.getsessionconfig().setidletime(idlestatus.both_idle, 10);
acceptor.bind(new inetsocketaddress(port));
這樣服務端只會從指定的ip接收資料,如果客戶端使用其他的ip位址則服務端拒絕連線。
Apache Mina 白名單實現方法
mina自帶了乙個黑名單過濾器blacklistfilter,可過濾黑名單列表中的網路連線。用來防止非法的客戶端訪問。但在某些應用場景裡需要設定白名單,只接收某些指定ip的客戶端發來的資料。這就需要實現白名單功能。我們可以自己實現白名單過濾器,方法很簡單只需仿照blacklistfilter做些修改...
Apache Mina 白名單實現方法
mina自帶了乙個黑名單過濾器blacklistfilter,可過濾黑名單列表中的網路連線。用來防止非法的客戶端訪問。但在某些應用場景裡需要設定白名單,只接收某些指定ip的客戶端發來的資料。這就需要實現白名單功能。我們可以自己實現白名單過濾器,方法很簡單只需仿照blacklistfilter做些修改...
php檔案白名單 php實現ip白名單黑名單功能
這個是乙個檢測ip是否非法的php函式,適應於白名單,黑名單功能開發,主要場景應用於 api 限制,訪問限制等.複製 如下 安全ip檢測,支援ip段檢測 param string ip 要檢測的ip param string array ips 白名單ip或者黑名單ip return boolean...