Обновить

Комментарии 23

То есть вы продаете бесплатные курсы?

Быстро спиздил и ушел, называется - нашел!

Да там и с оплатой беды какие то)

тут гиф PoC
тут гиф PoC

Потыкался минут пять в DevTools, посмотрел стек безопасности. Делюсь по горячим следам.

Из хорошего: JSON-ы с текстом уроков (/content/<курс>/lessons/N.json) реально закрыты на бэке. 403 Forbidden, если курс не оплачен. То есть человек хотя бы какую-то проверку поставил, и на том спасибо.

Из плохого: mp4 того же самого платного урока и .vtt-субтитры лежат соседним каталогом и отдаются всем подряд статикой. Без единой проверки. Текст урока — сокровище за семью замками, а сам видеоролик — заходи кто хочешь. Логика безупречная. Блин.

Из совсем плохого: авторизация через Телеграм, user_id кладётся в cookie aa_uid. Без подписи. Конкретику блюрю, но суть простая: меняешь там одно число на чужое, и сервер радостно считает тебя владельцем чужой подписки. Telegram ID не секрет, ботов, которые резолвят username → id, гугл выдаёт пачкой. То есть для «входа под другим» нужен только ник того, кто реально занёс деньги.

Бонус-трек: paid-check.php на фронте — это вообще не проверка, а UI-декорация. В консоли пара строк, и на экране всё разлочено. Правда, как я выше писал, это даже не нужно: видео-то и так открыто.

Чинится за полдня и пару промтов:

  • cookie подписать HMAC'ом (или JWT, или серверная сессия), HttpOnly + Secure;

  • видео и субтитры отдавать через тот же gate, что и JSON-ы. А ещё лучше — signed URL с TTL минут пятнадцать;

  • paid-check.php оставить как есть, он и не должен быть барьером, он только для UX.

Автор, если читаешь, приходи в личку. Дам подробности с командами и респонсами, спокойно пофиксишь до того, как кому-нибудь прилетит идея написать это же самое, но без блюра.
Это я еще не говорю о дыре в http2 которая позволяет в пару тыков потушить ваш сайт


Всегда улыбал вайбкод и слепое доверие вайбкоду

Спасибо за разбор, всё по делу. Поправил:

  1. Cookie подписан HMAC (SHA-256). Старый aa_uid с голым Telegram ID заменен на aa_session с подписью: user_id:expiry:hmac. Флаги HttpOnly, Secure, SameSite=Lax. Подделать без серверного секрета не получится.

  2. Видео и субтитры убрал из публичной директории. Файлы перенесены за пределы webroot, раздаются только через PHP-гейт с проверкой подписанной сессии. Для платных уроков дополнительно проверяется оплата. Range-запросы для перемотки поддерживаются.

  3. Секреты вынесены из исходников. Пароли Robokassa и ключи авторизации больше не в коде, лежат в файлах за пределами git.

  4. paid-check.php оставил как есть , он и не должен быть барьером, только UX, как вы и написали.

По поводу HTTP/2: если речь про Rapid Reset (CVE-2023-44487), это на стороне хостинга, тем не менее тоже переделал.

Если захотите перепроверить, буду рад!

А перевод такого количества - это не работа? Да и 900 руб - это сущие копейки.

То есть считаете, что ТС руками превёл? Ну-ну. С помощью этих же ИИ за час-два делаешь скраппер и автоперевод. Профит!

Руками только слепые переводят и какая разница как они переведены? Курсы как раз для тех, кто не знает, что такое скраппер и не умеет пользоваться автопереводом. Человек потратил 2 часа своего времени и предлагает приобрести свой результат. Добровольно, заметьте, приобрести. И за ничтожные деньги, не сопоставимые со стоимостью. Я, например, ему благодарен. Я могу это все сделать, но это займет не 2 часа (надо будет разобраться) и я лучше это время потрачу более эффективно.

Займитесь и выложите сюда же бесплатно, будем вам благодарны)

Видео идет, субтитры не появляются. Переключаю английские/русские, ничего. Браузер хром. Что делаю не так?

Что с субтитрами. Готов смотреть, понимаю что потратили время, спасибо Вам. Только нет субтитров, а с английским проблема.

Жалко кармы не хватает по достоинству оценить такую сноровку. И это CTO... Греб....ый стыд.

Яндекс браузер с авто переводом уже забанили? Стыдно как-то деньги за такое брать.

Справедливый вопрос. Яндекс.Браузер переведёт страницу, если до неё добраться. Но Skilljar в России заблокирован (как и Claude в целом), а курсы закрыты за регистрацию и пошаговое прохождение. Нужно найти платформу, зарегистрироваться, пройти каждый урок по очереди, чтобы открылся следующий.

Видео там висит на YouTube, который в России тоже работает с ограничениями. Я скачал все 300+ роликов, перекодировал и залил, чтобы открывались без VPN. Субтитры перевёл отдельно, это не машинный перевод страницы.

Можно ли всё это сделать самому? Конечно! Можно и без курсов обойтись, нейронка сама расскажет, как она работает. Но этот продукт про удобство: всё собрано, переведено, структурировано в одном месте. 70% бесплатно, деньги только за оставшиеся 30%, кому нужно (а по моему опыту, до конца курсов доходят лишь единицы).

Лайфхак. Закачиваешь видео на ютуб, в яндекс-браузере включаешь синхронный перевод.

Чел даже над UI не запарился, не подумал про мультипоатформенность. Не, сделать проект с нуля(и плевать что с кодом) и начать зарабатывать это круто, но проверить то надо
Чел даже над UI не запарился, не подумал про мультипоатформенность. Не, сделать проект с нуля(и плевать что с кодом) и начать зарабатывать это круто, но проверить то надо

сайт у всех октрывается ?

Проверил, открывается. Аптайм сайта нормальный, все работает корректно.
Проверил, открывается. Аптайм сайта нормальный, все работает корректно.

Что-то вместо курсов другое по ссылке открывается

Можете перепроверить субтитры, много где нет

все оплачено. второй курс. не дает просмотреть не бесплатную часть, все время просит оплатить дополнительно. я так понимаю слетает регистрация, поэтому просит оплатить еще. причем это на все кроме первой части "возможности и ограничения ИИ"

Ответил вам в личные сообщения: платежи и доступы работают корректно. Если что-то недоступно, пришлите, пожалуйста, скриншоты оплаты и то, что вы видите на сайте.

самая новая инфа, там не слетает регистрация, а как будто я не оплатил, но в телеге такая надпись "вы авторизованы! Вернитесь в браузер — страница обновится автоматически."

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации