- Expediere
- 23 septembrie 2026 la 11:14 UTC
- Autor
- Kamo
- Comite
- d47b471
/topic/chat/session/{guid} şi /topic/webrtc/session/{guid} nu au fost păziţi la toate: orice priză autentificată ar putea SUBSCRIBE la o altă sesiune de live mesaje de chat sau oferta WebRTC/răspuns/trafic ICE doar prin cunoaștere (sau ghicitul) guide sale - geamănul viu al gaura-rescriere MediaController.canReadSesiune închisă pentru HTTP (f7b2bd5). Client SEND fie a fost, de asemenea, deschis; nici un client legitim trimite vreodată la ei (fiecare real un singur subscrie), astfel încât un SEND fals ar putea injecta un mesaj live fals sau Semnalizarea cadru într-o sesiune falsificatorul nu poate chiar citi. WebSocketConfig.preTrimite acum gărzi SUBSCRIBE la ambele prefixe cu SessionAccessGuard#canRead - aceeasi regula pe care o foloseste poarta MediaController, Nu o a patra copie a ei - și *************** acum refuză SEND la ambele pur și simplu, potrivire orice alt subiect în această listă de permis. canRead needed a second entry point: semnătura sa existentă solicită o HttpServlet Cerere pentru drepturile apelantului (support TICKET suplimentar Admitere), și un cadru STOMP nu are nici unul - numai ceea ce WebSocketAuthInterceptor ştampilat în sesiunea de la CONNECT (membru/orgId/drepturi, citit aceeași sesiune *** o cerere HTTP ar fi rezolvat). Noul canRead(sesiune, apelant, List<String> drepturi) supraîncărcare ia această formă direct; ambele supraîncărcări deleg acum la o implementare privată, astfel încât Regula reală este încă scrisă exact o dată. Un vizitator de chat public nu este deloc membru - PublicChatWebSocketInterceptor timbre estePublicChat/sessionGuid în schimb, deja rezolvate și verificate împotriva simbolului lor sesiune la strângerea de mână. Regula subscrierii lor este directă. guid meci împotriva că, niciodată sesiuneAccessGuard#canRead (care necesită un Membru și ar refuza un apelant care nu are nici unul) - confirmat împotriva kamo-intern, care numai vreodată subscrie la aceste două subiecte și niciodată trimite la oricare. Acoperit de ***************** (membru admis/refuzat) de către gardian, un vizitator public admis la propria sesiune și a refuzat diferite, subiecte neatinse), cazuri noi în SesiuneAccessGuardTest și StompDestinationAuthzTest pentru lista de drepturi Supraîncărcare și noul refuz SEND. Verificare mutație: scădere noul Subscrie verificarea, încălcarea regulii de supraîncărcare a listei de drepturi, și (ca o verificarea regresiei) afirmaţia pre-existentă "nepăzită" care se închide fiecare rândul său, o afirmație specifică roșu; toate restaurate și rerula verde.
