Глобальные переменные javascript - защита

Я использую некоторые глобальные переменные в веб-приложении, построенном на Html/Javascript. Я использую эти переменные на разных страницах (или их части), а иногда они используются в качестве пост-данных для вызовов ajax. Мой вопрос: насколько это безопасно? конечно, я могу установить разные значения для этих переменных (например, используя консоль), а затем вызовы, которые полагаются на этот var, сделаны. Представьте, что пользователь устанавливает некоторый идентификатор, соответствующий тому, к которому у него даже нет доступа.

Как это сделать?

Заранее спасибо

3 ответа

В этом нет ничего особенного в любом веб-приложении с точки зрения безопасности.

Все, что отправлено из браузера, должно рассматриваться как недоверенное сервером. Сюда входят параметры URL-адреса, данные формы, файлы cookie, заголовки HTTP и все, что контролируется javascript. Все эти элементы могут манипулировать злоумышленником.

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

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


если вы используете jquery, вы можете использовать $. data()

С этим вы можете связать данные с элементом, таким образом, неавторизованный пользователь не сможет получить к нему доступ


Javascript имеет идентификатор типа времени выполнения (все это var, как визуальный базовый), его язык с плохой типизацией.

У Javascript есть своя модель безопасности, хотя

  • Пользователь не может получить доступ к файлам (r/write)
  • Он не может получить доступ к пользовательскому местоположению, файлам, открывать окна без необходимости и т.д.

Невозможно защитить источник вашего файла javascript, или даже защитить его, так как это лучше сделано на стороне сервера.

Даже шифрование или дешифрование не работают, потому что вам нужно сообщить своим пользователям ключ

Хуже, JavaScript может самостоятельно модифицироваться во время выполнения - и часто это делает. Это означает, что угроза безопасности может отсутствовать в синтаксисе или коде при доставке клиенту, но может появиться после выполнения script.

Нет прокси-сервера JavaScript, который анализирует и отклоняет вредоносное script, а не решение, которое проактивно сканирует JavaScript для эксплойтов на основе кода, а не внешний ответ на проблему. Это означает, что мы должны полагаться на разработчиков браузеров, чтобы не только писать хороший браузер со всеми наворотами, которые нам нравятся, но и для обеспечения безопасности.

licensed under cc by-sa 3.0 with attribution.