безопасность javascript:вызов AJAX для записи разрешения экрана пользователя, возможно ли предотвратить поддельные номера?

StackOverflow https://stackoverflow.com/questions/908283

Вопрос

Это секретный вопрос javascript:предположим, страница узнает разрешение экрана компьютера, например 1024 x 768, и хочет использовать вызов AJAX для занесения этих данных в базу данных.

Есть ли способ на самом деле предотвратить ввод поддельных данных в базу данных?Я думаю, что что бы ни делали HTML или Javascript, пользователь может перепроектировать код таким образом, чтобы некоторые поддельные числа были введены в базу данных, или есть способ полностью предотвратить это?(100% безопасность).

Обновить:или в аналогичной ситуации...если я напишу простую игру на javascript...есть ли способ для пользователя отправить обратно счет с помощью AJAX и солгать о своем счете?

Это было полезно?

Решение

Если вы начнете с предположения, что пользователь, с которым вы общаетесь, является вредоносным, то нет;вы ничего не можете сделать, чтобы контролировать, какие данные они вам передают.Конечно, не со 100% уверенностью - в худшем случае они могут использовать сетевые инструменты, чтобы переписать или заменить любой "правильный" контент тем, чем захотят.

Если вы просто хотите предотвратить случайное вредоносное по, вы могли бы запутать или зашифровать свой код и / или данные.Это не отпугнет решительного злоумышленника.

Если вы действительно доверяете реальному пользователю, но подозреваете, что другие могут попытаться выдать себя за него, вы можете использовать другие методы, такие как динамическая канарейка:отправьте пользователю случайное число, и если они вернут вам это же число, вы будете знать, что оно действительно пришло от них.(Или вы подвергаетесь атаке "человек посередине", но эй;вот для чего нужен SSL.)

Другие советы

Невозможно запретить пользователям отправлять любые понравившиеся им номера обратно из JavaScript.

Я думаю, лучшее, что вы могли бы сделать, это выполнить какую-то проверку на стороне сервера, чтобы убедиться, что отправленные обратно числа выглядят как реалистичное разрешение.

Хотя я не уверен, зачем кому-то вообще тратить время на подделку этих цифр.

Да, вы правы.Поскольку вы используете код на стороне клиента, вы должны сказать компьютер пользователя (а значит и пользователя) в той или иной форме, независимо от шифрования или обфускации, который вы используете.С этим ничего не поделаешь.

Что касается разрешения, то в принципе было бы невозможно определить, является ли это допустимым разрешением.Мое разрешение обычно отправляется на сервер как 5120 x 1600, что кажется довольно нереалистичным, но это потому, что 2 экрана часто отправляются как 1.В противном случае существует такое огромное разнообразие возможностей в разрешениях экрана и конфигурациях экрана, что вы, вероятно, удалили бы многие допустимые из них, хотя их может быть немного.

Для оценки игры вы могли бы выполнить дополнительные проверки, которые усложнят проверку.Такие вещи, как отправка нескольких уведомлений о счете на протяжении всей игры и требование номера X для гарантии того, что полученный счет действителен.(Т. е. вы должны набрать один балл в диапазоне 200-300, 400-500, 700-800, а затем набрать окончательный балл 1000.) С окончательным результатом у вас также может быть какое-то зашифрованное значение, которое может быть использовано только один раз или которое содержит некоторые данные с CRC на них.В принципе, в конечном итоге требуется получение других данных, кроме просто оценки, особенно для более высоких баллов.

Чтобы попытаться ответить, развивая комментарии, сделанные Dok и вами самими, существует четкое различие между манипулированием приложением, чтобы "обмануть" его в чем-то, будь то онлайн-бизнес, чтобы получить что-то дешевле, или MMPORG, чтобы получить больше опыта, чем манипулирование им таким образом, что оно неправильно отображает интерфейс и снижает общий пользовательский опыт для этого конкретного пользователя (хакера?).

Ваше время было бы лучше потратить, сосредоточившись на других аспектах вашего сайта.Я не рекомендую пользователям моего сайта манипулировать HTML-кодом, чтобы он выглядел забавно на их компьютерах, но я не собираюсь из кожи вон лезть и запутывать выходные данные моего сервера, чтобы они не навредили себе.В вашем случае проверка диапазона на соответствие заранее определенным безопасным значениям с использованием базы данных для обеспечения просмотра пользователем с "разрешенным" разрешением создает ненужную нагрузку на ваше приложение и требует времени.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top