(наверное, я неправильно сформулировал вопрос. Речь идёт о конкретной связке: php+node.js+socket.io)
Добрый день.
Я делаю чат на php,mysql,js
Решил использовать сокеты и прикрутил socket.io (через ElephantIO).
Раньше я таких задач не реализовывал, поэтому опыта мало.
Так вот, когда кто-то пишет новое сообщение, сервер отдаёт это сообщение сразу без относительно того кто кому написал. Т.е. я залогинился под разные аккаунты и начал писать новые сообщения. В консоли я всегда вижу новое сообщение. Разумеется я могу сделать в js методе проверку на предмет того, что отрисовывать это сообщение нужно только если id текущего юзера и адресата совпадают. НО! Разве потенциально взлоумышленник не сможет просто таким образом "прослушивать" весь поток сообщений, просто добравшись до нужного метода через консоль и убрав проверку?
Я правильно понимаю, что это кривой вариант? (в целом или при попытке подружить ноду и php).
Всё больше склоняюсь в сторону использования простого ajax по интервалу. Как и склоняюсь к тому, что судя по всему будущее за node.js (просто весь проект мне уже не перенести на ноду)
Буду рад совету, ответу и просто полезным мыслям. Спасибо)
У вас какая-то каша в голове. То, что через веб сокет на сторону сервера можно послать что угодно - вполне норм, вы должны проверять все, что приходит в любой ситуации. Что дальше уже делать с проверенным сообщением - уже дело вашей бизнес логики.
понятное дело, что всё завязано на бизнес логике. Я о другом (ну может и каша), а именно: написание сообщения происходит через ajax. Данные формы отправляюся и сохраняются соответственно. Если всё ок, то я вызываю метод, который передаёт данные "в вид" ($client->emit('new_msg',$data);)
Суть в том, что (повторяюсь) вне зависимости от текущего пользователя в консоле всегда видно это сообщение (console.info()). Я разумеется, могу сделать проверку на соответствие текущего пользователя и адресата и если они равны - отрисовать это сообщение. Но эта проверка пройдёт на стороне клиента. в контексте того, что работает не node.js, а связка node.js и php - я сомневаюсь в безопасности такого решения.
index0h: я беспокоюсь о том, что таким образом можно читать все сообщения, потому что фильтрация их на стороне php (закрытой стороне) не происходит. Они (все только что добавленные сообщения) могут быть прослушаны.
Вот реальность этого "сценария" меня и волнует. Как вы думайте это ведь реально?
Я не понимаю, в чем у вас блин проблема?)) Сообщение идет от клиента (браузера) к серверу, так же в обратном направлении от сервера к клиенту. Что вас смущает? То, что сервер должен броадкастить все сообщения всем клиентам? Дык - это как раз и является вашей задачей, правильно отобрать клиентов, которым необходимо отправлять сообщения, предназначенные для них.