Я веб-разработчик-самоучка, и за эти годы я многому научился у более опытных разработчиков, но есть одна вещь, которая меня всегда беспокоит...
Идея в том, что любой пользователь может видеть и редактировать все, что создано с использованием «интерфейсных технологий», то есть HTML, CSS, JavaScript. Я чувствую, что я слишком параноик по этому поводу, но хотел услышать от людей, которые более опытны и квалифицированы, чем я.
Очевидно, я знаю, что должен защитить веб-сайт, чтобы можно было проверить все мыслимые действия пользователя, но я все еще не могу не задаться вопросом, достаточно ли этого? Я понимаю, что это общий вопрос, и на него трудно ответить, но рассмотрим следующую ситуацию.
Я создаю веб-сайт со значительным количеством модальных окон или всплывающих окон. Примером может быть модальный вход в систему. Когда пользователь нажимает кнопку «Войти», я отображаю журнал в модальном режиме и скрываю его после закрытия.
Теперь представьте, что многие из этих модальных окон скрыты от пользователя, но они по-прежнему отображаются как скрытые элементы при проверке веб-сайта. Затем пользователь может отображать модальные окна при редактировании CSS, что может вызвать проблемы, если эти модальные окна отображаются там, где они не должны отображаться.
Это грубый пример, но считается ли это «плохой практикой/структурой кода»? Я просто очень смущен, если это совершенно незначительно, поскольку это не «нормальная» функциональность веб-сайта, или если это важно, и я должен тщательно структурировать то, что показано в окне проверки браузера.
Надеюсь, кто-нибудь прольет свет на этот вопрос.
Спасибо
Закодируйте свой сервер так, чтобы он соответствовал пословице «Никогда не доверяйте клиенту», и все готово. Ваша паранойя уйдет.
@RoddyoftheFrozenPeas Так что же вы тогда предлагаете? Должен ли я удалить модальные окна из DOM или вы имели в виду что-то другое?
@MSiric - создавайте модальное окно, если и когда вам это нужно. Уничтожьте его потом. Я унаследовал огромное, медлительное устаревшее веб-приложение, которое создавало все свои представления, модальные окна и т. д. и хранило их в памяти (просто скрыто) до тех пор, пока они не понадобятся. У него была привычка время от времени крашить браузер пользователя. Однако вам нужно оценить свои собственные варианты использования. А что касается «безопасности», следуйте совету Ника и никогда не доверяйте пользователю — повторяйте любую проверку на стороне сервера, дважды проверяйте все получаемые данные и не оставляйте ничего скрытого в доме, чтобы они могли его найти.
@RoddyoftheFrozenPeas Спасибо за совет, теперь я окончательно успокоился.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Пока код, видимый пользователю, не содержит ничего, что должно быть секрет и известно только серверу, с этим определенно не стоит заморачиваться. Существует бесчисленное количество способов сломать веб-сайт, открыв консоль или инструменты разработчика, а также удалив/переместив элементы или введя собственный код Javascript. Сделать веб-сайт непроницаемым для такого рода настроек было бы невозможно.
Если веб-сайт выходит из строя в результате вмешательства пользователя, это вина его, а не дизайнера сайта (и, в худшем случае, он может просто обновить страницу, чтобы вернуться к странице, работающей в соответствии с дизайном). Пока клиенту не отправляется ничего, что должно быть секретным, не стесняйтесь создавать страницы с предположением, что конечный пользователь не будет запускать какой-либо пользовательский Javascript или вносить какие-либо изменения самостоятельно. Они мая, конечно, так и делают, но до тех пор, пока это не позволяет им делать вещи, которые вызывают проблемы для других пользователей или сервера (например, принимать непроверенные данные на бэкэнде или отправлять клиенту что-то, что должно быть секретом). , беспокоиться не о чем.
Создавать страницы, предполагая, что конечный пользователь не будет запускать какой-либо пользовательский JavaScript? Я не уверен, что это безопасное предположение. Если вы создаете веб-сайт, и сервер отправляет данные для всех пользователей, а клиент показывает только информацию, относящуюся к этому пользователю. Это плохо. Еще нужно подумать о безопасности. Если злоумышленник может запустить пользовательский JavaScript и вызвать плохой результат или проблему безопасности, это плохо.
Это то, для чего предназначалось первое предложение ответа, оно должно было быть более ясным. Не доверяйте клиенту, конечно, но пока все, что должно быть секретным, остается на сервере, дальнейшие возможные настройки, сделанные клиентом, не должны быть чем-то, что нужно защищать (потому что это ненужно и невозможно)
Это считается обратной практикой, но не из соображений «безопасности», а из соображений производительности. Конечно, вы примете удар за создание всплывающего окна только один раз, но вы получите расширенный удар на протяжении всего времени существования сеанса пользователя, поскольку вы держите весь этот мусор в памяти. В среднем вам понадобится этот модальный вход только один раз.