Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inne]zabezpieczenie czatu nodejs
bartek4175
post 14.10.2016, 22:06:59
Post #1





Grupa: Zarejestrowani
Postów: 284
Pomógł: 1
Dołączył: 15.08.2013

Ostrzeżenie: (0%)
-----


Witam!

Mam prosty czat na socketach i problem jest w tym, że socketa mozna tez przez konsole wyslac i łatwo jest się podszywac, nie mam pomysłu jak to naprawic
strona:
  1. socket.on('message', function(data){
  2. $('.chat-body').append('<div><div class="chat-message" id="chat-message"><div class="chat-name"><img src="'+data.avatar+'" class="img-rounded float-left avatar"><p><strong>'+data.login+'</strong></p></div><div class="chat-message"><p>'+data.message+'</p></div></div></div>');
  3. $('#message').val('');
  4. document.getElementById("chat").scrollTop = document.getElementById("chat").scrollHeight;
  5. });

  1. socket.emit("message", { admin: "<?php print($admin); ?>", avatar: "<?php print(htmlspecialchars(trim($_SESSION["steam_avatar"]))); ?>", login: "<?php print($_SESSION["steam_personaname"]); ?>", message: $("#messageee").val() });

serwer:
  1. socket.on('message', function(data){
  2. if(data.admin == 1) {
  3. var login = '<span style="color: red;">'+data.login+'</span>';
  4. } else if(data.admin == 2) {
  5. var login = '<span style="color: green;">'+data.login+'</span>';
  6. } else if(data.admin == 3) {
  7. var login = '<span style="color: orange;">[STREAMER] '+data.login+'</span>';
  8. } else {
  9. var login = data.login;
  10. }
  11. if(data.admin != 4) {
  12. var message = entities.encode(data.message);
  13. io.emit('message', { avatar: data.avatar, login: login, message: message });
  14. }
  15. });
Go to the top of the page
+Quote Post
Skie
post 14.10.2016, 22:17:33
Post #2





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----


Najlepiej zrób flood protection, czyli limit ile wiadomości może dany user posłać na czat w danym przedziale czasu, rozpoznając go np po IP.

Ten post edytował Skie 14.10.2016, 22:17:48


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
bartek4175
post 14.10.2016, 22:23:51
Post #3





Grupa: Zarejestrowani
Postów: 284
Pomógł: 1
Dołączył: 15.08.2013

Ostrzeżenie: (0%)
-----


Cytat(Skie @ 14.10.2016, 23:17:33 ) *
Najlepiej zrób flood protection, czyli limit ile wiadomości może dany user posłać na czat w danym przedziale czasu, rozpoznając go np po IP.

IP może być zmienne.
Fake sockety mogą tez być wysyłane co 3 sekundy. Tu nie chodzi o spam a podszywanie się pod kogoś.
Go to the top of the page
+Quote Post
Skie
post 14.10.2016, 22:57:50
Post #4





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----


Jak chcesz bronić ludzi przed podszywaniem się, to po prostu zaimplementuj mechanizm sesji, ustaw timeout na tę sesję i dodaj logowanie do czatu. WebSocket działa na serwerze HTTP, w momencie utworzenia socketa, leci request HTTP. Wymuś logowanie na typ etapie, by utworzenie połączenia było możliwe tylko z loginem i hasłem, po utworzeniu socketa ustaw timeout po jakim HTTP ma być zamknięte, co zamknie również WS.


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 15:31