国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

新手請教一個關(guān)于聊天室開發(fā)的安全問題

agressor

個人比較菜還望多多指教。目前我們開發(fā)了一套微信的應(yīng)用程序,由于原有程序是放到windows2012的服務(wù)器上,所以考慮就把workerman放到了另一臺linux服務(wù)器上。有幾個疑問望大神們幫忙下。例如我使用WebSocket協(xié)議對外提供服務(wù),在原有程序上開發(fā)的聊天室遠程連接workerman的服務(wù)器,在微信應(yīng)用的程序我會判定是否是這個聊天室的成員,包括是否為管理還是普通用戶,我在想一個問題,就是微信應(yīng)用的服務(wù)器發(fā)送到聊天服務(wù)器上是用json進行數(shù)據(jù)傳輸?shù)?,如果進行全體禁言時候微信應(yīng)用的服務(wù)器會判斷是否為管理是否為當前房間的用戶,如果按照簡單的開發(fā)實例在谷歌瀏覽器里輸入:

// 假設(shè)服務(wù)端ip為127.0.0.1
ws = new WebSocket("ws://127.0.0.1:2346");
ws.onopen = function() {
    alert("連接成功");
    ws.send('tom');
    alert("給服務(wù)端發(fā)送一個字符串:tom");
};
ws.onmessage = function(e) {
    alert("收到服務(wù)端的消息:" + e.data);
};

有用戶使用惡意行為進行json數(shù)據(jù)進行更改的話,那么裝有workerman的服務(wù)器應(yīng)該如何判斷惡意更改的用戶是否為管理是否是這個聊天室的成員?
還有就是如果用戶知道json數(shù)據(jù)格式后,這些隨意更改房間號接收其他房間的信息或者進行其他踢人的功能,如何避免惡意使用?
我的想法是用戶發(fā)送信息到workerman服務(wù)器后,在微信應(yīng)用的服務(wù)器接收數(shù)據(jù)時候進行判斷是否有相關(guān)的權(quán)限但是感覺還是有些行不通。還望大神不吝賜教。

7313 8 0
8個回答

walkor 打賞

建議用GatewayWorker框架,業(yè)務(wù)實現(xiàn)不在GatewayWorker中做,僅僅把GatewayWorker當作一個單向的推送通道(通過GatewayClient向客戶端推送)。這樣GatewayWorker與現(xiàn)有項目能很好的解耦,權(quán)限控制及其它業(yè)務(wù)邏輯還是按照項目原有的方法做,僅當需要向客戶端主動推送數(shù)據(jù)時才調(diào)用GatewayClient推送數(shù)據(jù)。

參考這個 http://wenda.workerman.net/?/question/886

  • 暫無評論
agressor

多謝大神 ! 看了你發(fā)的這個鏈接如大夢初醒一般。太方便了!多謝?。。?br /> 剛接觸了兩天看完了workerman GatewayWorker框架還沒看。

  • 暫無評論
agressor

大神再請教一個問題 如果把GatewayWorker當做一個單向的推送通道,那如何實現(xiàn)語音實時傳輸呢?

  • 暫無評論
walkor 打賞

客戶端需要什么格式直接傳就行了

  • 暫無評論
agressor

大神求指教,GatewayClient和GatewayWorker不是在同一臺服務(wù)器上,GatewayClient接收數(shù)據(jù)怎么寫?
能否給個例子?

  • 暫無評論
walkor 打賞

GatewayClient只能發(fā),不能收。單向的

  • 暫無評論
agressor

大神求指教,我把GatewayWorker當做一個單向的推送通道,在客戶端連接上之后在服務(wù)器上的Event.php 寫的直接獲取客戶端的client_id

 public static function onConnect($client_id)
 {
     // 向當前client_id發(fā)送數(shù)據(jù)
     $data = array(
         'type' => 'login', 
        'client_id'=>$client_id
     ); 
     Gateway::sendToClient($client_id,json_encode($data));
 }

然后發(fā)送給客戶端,客戶端接收到信息后發(fā)送到應(yīng)用后端GatewayClient 進行分組 綁定UID 發(fā)送登錄信息。
由于所建立的是單向的推送通道 服務(wù)器上的event.php只寫了用戶連接上之后發(fā)送的業(yè)務(wù)邏輯其他的業(yè)務(wù)邏輯都是在另一個應(yīng)用上寫的。但是又碰到難點了,

Gateway::getClientInfoByGroup($roomid);
foreach($clients_list as $tmp_client_id=>$item)
{
    $clients_list = $item;
}

獲得json
Object {781ade1d0b560000001a: null, 781ade1d0b5700000012: null}
client_id對應(yīng)的clientname都是為null,如果在服務(wù)器上可以session用戶名,這作為單項通道如何session存儲用戶名呢?迷茫了求助

  • 暫無評論
walkor 打賞

GatewayClient有個Gateway:: updateSession($client_id, $session); 方法,可以后臺更改某個client_id的session

  • 暫無評論
年代過于久遠,無法發(fā)表回答
??