Никогда не доверяйте клиенту. Это моя кодирующая мантра. Все javascript могут, с достаточным усилием, быть перезаписаны или скомпрометированы. То, что я хочу понять, это то, как.Степени уязвимости JS
Предположим, что я написал функцию checkStep()
для игры - каждый раз, когда игрок перемещается на один пробел, он проверяет сервер на наличие каких-либо событий: восстановление HP, ввод случайной битвы, переход к следующей карте и т. Д. Я спросил себя «Я, как я могу переписать или отключить эту функцию?» Исследования выявили некоторые противоречивые результаты. Некоторые источники говорят, что функции могут быть напрямую переопределены с консоли, другие говорят, что это будет гораздо более сложный процесс.
Мой вопрос: что бы игрок должен был сделать, чтобы переписать или отключить функцию checkStep()
? Могут ли они просто переопределить его с консоли? Должны ли они копировать, модифицировать и повторно размещать мой код? Как бы вы это сделали?
Please note, I'm not asking how to make this function secure. The first person to leave an answer/comment along the lines of "you can try minifying it, but it still wont be secure" or "put in some server-side checks" is getting bludgeoned with a semicolon, as an example to the rest.
Игроку не нужно ничего переписывать или использовать консоль вообще. Браузер запускает javascript на компьютере пользователя, отправляет POST или GET запросы на ваш сервер, а любой компьютер, даже один из 1996, работающий под управлением DOS 3.0, может отправлять запрос GET или POST, содержащий все, что им нравится, то же самое касается любой команды Linux линии и даже некоторых калькуляторов. Итак, если мне нужно выяснить, что вы используете MySQL для хранения того, что отправлено на сервер, и что фильтрация не происходит, я могу из командной строки отправить запрос, содержащий простую команду SQL, которая удаляет целая БД. – adeneo
@adeneo хорошая вещь Я не такой глупый. – CodeMoose
Ах, но вы были бы удивлены тому, как мало это нужно, просто небольшая ошибка при проверке формы или даже оставлении чего-то открытого на сервере, который генерирует страницы, может привести к тому, что кто-то выяснит способ нанесения урона или получить доступ к вещам у них не должно быть доступа. – adeneo