Javascript Securty: AJAX-вызов для записи разрешения экрана пользователя, возможно ли предотвратить поддельные номера? - PullRequest
1 голос
/ 26 мая 2009

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

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

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

Ответы [ 5 ]

5 голосов
/ 26 мая 2009

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

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

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

2 голосов
/ 26 мая 2009

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

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

Я не уверен, почему кто-то потратил время на подделку этих цифр.

1 голос
/ 26 мая 2009

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

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

1 голос
/ 26 мая 2009

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

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

1 голос
/ 26 мая 2009

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

...