В сети распространяется множество уязвимостей, и вся сеть зависит от JavaScript. Чтобы создать безопасное приложение JavaScript, вы должны думать как злоумышленник.

Инфографика выше показывает утечки данных компаниями. Интересно, что идентификационная карта моей страны под названием Aadhaar (например, SSN в США) заняла первое место по количеству утечек данных. Вы можете подумать, что плохое обеспечение безопасности. Но согласно исследованиям, в среднем компания тратит на безопасность около 4 миллионов долларов.

Вспомните HeartBleed, живую уязвимость в OpenSSL, которая просматривалась в течение трех лет и наконец была обнаружена в 2014 году. Затем шеллшок, poddle expolit, StageFright, где вы можете управлять любым телефоном с помощью всего одного текстового сообщения.

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

ЕГО ТРУДНАЯ ПРОБЛЕМА

Для решения проблемы всегда есть правильный путь, и нам нужно понять проблему.

Безопасность через двусмысленность

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

НЕПРЕРЫВИМОЕ - это чушь собачья, может быть, в будущем, когда квантовые компьютеры будут развиваться, все можно сломать. Возможно, я ошибаюсь, но это долгий путь к свободе.

Безопасность через незнание

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

Признавая, что утечки могут происходить в коде, мы можем повысить безопасность организации. В Cisco работает 73 000 сотрудников, и третий квартал использует оборудование Cisco в Интернете. Cisco имеет отличную культуру безопасности.

Понимание своего врага и себя

Есть черные шляпы, белые шляпы, серые шляпы. Белые шляпы - хорошие парни, которые распространяют общественное мнение, они исследователи безопасности с активным твиттером следят за ними. Они дают много советов по безопасности. Черные шляпы - плохие парни, цель которых - деньги, власть, разрушение, месть. Это заставляет их нанести серьезный ущерб организации.

Знайте приложение

Когда вы создаете приложение, знайте его предполагаемую функциональность, поведение и то, куда попадают их ввод и вывод. Атака - это процесс, заголовки, локальные хранилища и файлы cookie - основная точка атаки. Мы склонны раскрывать слишком много информации в наших заголовках. Попробуйте нарушить работу приложения, передав большое количество данных. На входе приложения проверьте параметры запроса, путь URL, параметры PUT / POST, файлы cookie, электронную почту, формы, веб-сокеты, локальное хранилище браузера.

В любое время, вводимые в приложение, могут быть потенциальные уязвимости.

Защита приложения JavaScript с помощью процесса

Внедрение команды: это происходит, когда ненадежные данные передаются интерпретатору как часть команды или запроса. SQL Injection - это атаки, которые может выполнить кто угодно, если вы посмотрите несколько видеороликов. Итак, проверяйте все вводимые пользователем данные на стороне сервера. Попробуйте использовать eval () в JS, по иронии судьбы setTimeout, setInterval используйте eval () под капотом.

Межсайтовый скриптинг (XSS). Эти атаки представляют собой процесс запуска вредоносного JS в браузере жертвы и в целевом приложении. Фрагмент кода позволяет вам поместить тег скрипта, и при перенаправлении тег скрипта загрузит новую страницу, и пользователь ничего не увидит. Представьте, что вы выполняете этот XMLHttpRequest. При успешном выполнении XSS может украсть пользовательскую информацию, файлы cookie, идентификаторы сеанса и перенаправить их на вредоносный веб-сайт.

Angular имеет встроенный контекст Escape.

Установите соответствующий заголовок:

Вы можете установить соответствующие настройки с помощью плагина npm под названием Helmet, для экспресс-доставки мы можем использовать https://github.com/ctavan/express-validator

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

Как это защитить?

Включите в запрос случайный, непредсказуемый токен, вы можете использовать плагин под названием csurf

Управление сеансом. Не пытайтесь создать собственную службу аутентификации. Есть хорошая аутентификация типа OAuth. Они тратят много времени на его создание. Используйте HTTPS для отправки токена, получите бесплатный сертификат HTTPS от https://letsencrypt.org/. Для разрешения на строительство используйте Паспорт ссылка

Управление паспортами. Не просто паспорт, используйте уровни шифрования, такие как хэш, соль. LinkedIn подвергся атаке и раскрыл миллионы данных только потому, что игнорирует соль. Используйте Bcrypt для хеширования пароля, попробуйте использовать двухфакторную аутентификацию

Обработка файлов cookie: отправляйте их только по HTTPS, не разрешайте доступ к файлам cookie с помощью JavaScript. Тайм-аут файла cookie через некоторое время. Используйте такие пакеты, как Cookie-Session, KeyGrip.

Полезные инструменты: https://github.com/retirejs/retire.js/, https://github.com/nodesecurity/nsp

ВМЕСТЕ МЫ МОЖЕМ СДЕЛАТЬ ВЕБ БЕЗОПАСНЫМ МЕСТОМ