steveseguin / vdo.ninja

VDO.Ninja is a powerful tool that lets you bring remote video feeds into OBS or other studio software via WebRTC.
https://vdo.ninja
Other
2.85k stars 812 forks source link

Safety Feature: director room password #682

Open Fred-DTV opened 3 years ago

Fred-DTV commented 3 years ago

Currently it is quite easy for someone who knows a room name and OBS.Ninja to enter the director room as well.

This could be easily exploited, so my thought was to have a custom director room password option.

buffos commented 1 year ago

I second that. If you are doing some kind of a show and you need to give the url to untrusted individuals it is very likely you will end with a hijacked show.

When a room is created it should have 2 passwords. For example have password1;password2 (literally split by a semicolon). All views can be unlocked using the first part of the whole password, the directors feed would require the whole password.

This way implementation would be trivial.

This way, it only requires minimal changes, namely the ones comparing the provided password with the stored one.

steveseguin commented 1 year ago

Thank you for feedback and suggestion.

I have been working on a system using vdo.ninja that is designed specifically for public call-in shows. I don't have an ETA on when it will be done, but it will include social-sign in, guest-blocking, permanent rooms with saved settings, and quite a bit more.

Until that is done though, I can offer a few options to help prevent abuse in rooms where untrusted guests might be invited.

How it works: When you join a room as a director with &maindirectorpassword, with the right password, the system will auto-assign you as the current "main" director. So it doesn't matter if you were the first in the room or not, just that you use the same password that you used when you originally created the guest invite/scene links for the room.

The main downside of using &maindirectorpassword is that invite and scene links will have a &token parameter added; invites and links are a bit longer as a result. This &token is needed though because I don't let users "own" a room with a vdo.ninja, so setting a saved password doesn't work on its own. When using &maindirectorpassword/&token though, the system queries a new database server I just setup, and it checks that to see who the current room owner is of the held token, ignoring anyone else who is claiming to be the owner.

I'll do more testing on this new &maindirectorpassword feature this week, and if I can think of a way to improve it more, I'll do so.

Either way, VDO.Ninja is based on a peer to peer design, so irrespective of using director passwords or such, you'll want to practice some caution when dealing with public users. Perhaps have a backup link for hosts, if the current room starts facing abuse problems, or use transfer-rooms to help filter out untrusted guests. I hope to address all these issues though with the upcoming call-in show system; thank you for the patience until then.

buffos commented 1 year ago

Wow. Indeed queues and pre-screen rooms are a great way to preserve the room from hijackers. This is indeed the best way. Screen and transfer. But requires a second person to do that job (at least for some usecases).

The maindirectorpassword is a middle ground. A compromise. Not the great protection the queuing method provides, but a fast way to secure control of the room.

Thank you again for an amazing job.