Должен ли я беспокоиться о возможности пользователя изменить код при проверке веб-сайта?

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

Идея в том, что любой пользователь может видеть и редактировать все, что создано с использованием «интерфейсных технологий», то есть HTML, CSS, JavaScript. Я чувствую, что я слишком параноик по этому поводу, но хотел услышать от людей, которые более опытны и квалифицированы, чем я.

Очевидно, я знаю, что должен защитить веб-сайт, чтобы можно было проверить все мыслимые действия пользователя, но я все еще не могу не задаться вопросом, достаточно ли этого? Я понимаю, что это общий вопрос, и на него трудно ответить, но рассмотрим следующую ситуацию.

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

Теперь представьте, что многие из этих модальных окон скрыты от пользователя, но они по-прежнему отображаются как скрытые элементы при проверке веб-сайта. Затем пользователь может отображать модальные окна при редактировании CSS, что может вызвать проблемы, если эти модальные окна отображаются там, где они не должны отображаться.

Это грубый пример, но считается ли это «плохой практикой/структурой кода»? Я просто очень смущен, если это совершенно незначительно, поскольку это не «нормальная» функциональность веб-сайта, или если это важно, и я должен тщательно структурировать то, что показано в окне проверки браузера.

Надеюсь, кто-нибудь прольет свет на этот вопрос.

Спасибо

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

Roddy of the Frozen Peas 02.02.2019 18:49

Закодируйте свой сервер так, чтобы он соответствовал пословице «Никогда не доверяйте клиенту», и все готово. Ваша паранойя уйдет.

nicholaswmin 02.02.2019 18:50

@RoddyoftheFrozenPeas Так что же вы тогда предлагаете? Должен ли я удалить модальные окна из DOM или вы имели в виду что-то другое?

MSiric 02.02.2019 19:22

@MSiric - создавайте модальное окно, если и когда вам это нужно. Уничтожьте его потом. Я унаследовал огромное, медлительное устаревшее веб-приложение, которое создавало все свои представления, модальные окна и т. д. и хранило их в памяти (просто скрыто) до тех пор, пока они не понадобятся. У него была привычка время от времени крашить браузер пользователя. Однако вам нужно оценить свои собственные варианты использования. А что касается «безопасности», следуйте совету Ника и никогда не доверяйте пользователю — повторяйте любую проверку на стороне сервера, дважды проверяйте все получаемые данные и не оставляйте ничего скрытого в доме, чтобы они могли его найти.

Roddy of the Frozen Peas 02.02.2019 19:44

@RoddyoftheFrozenPeas Спасибо за совет, теперь я окончательно успокоился.

MSiric 03.02.2019 00:58
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
49
1

Ответы 1

Пока код, видимый пользователю, не содержит ничего, что должно быть секрет и известно только серверу, с этим определенно не стоит заморачиваться. Существует бесчисленное количество способов сломать веб-сайт, открыв консоль или инструменты разработчика, а также удалив/переместив элементы или введя собственный код Javascript. Сделать веб-сайт непроницаемым для такого рода настроек было бы невозможно.

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

Создавать страницы, предполагая, что конечный пользователь не будет запускать какой-либо пользовательский JavaScript? Я не уверен, что это безопасное предположение. Если вы создаете веб-сайт, и сервер отправляет данные для всех пользователей, а клиент показывает только информацию, относящуюся к этому пользователю. Это плохо. Еще нужно подумать о безопасности. Если злоумышленник может запустить пользовательский JavaScript и вызвать плохой результат или проблему безопасности, это плохо.

Charlie Fish 02.02.2019 18:52

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

CertainPerformance 02.02.2019 18:56

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