Описание
Я разрабатываю приложение Node.JS (больше похоже на полноценный сайт). Приложение отправит пять файлов JavaScript и будет иметь <script>
теги, связывающие их вместе.
Вопрос
Как я могу запретить пользователям и злоумышленникам просматривать и редактировать мой код ?
Примером может быть:
Ctrl+ Shift+I
В Devtools Готы Источники выберите файл для редактирования (т.е.
index.html
) и редактирования записиНажатие Ctrl+ Sприведет к редактированию в реальном времени
Я хотел бы предотвратить приведенный выше пример ... Возможно ли это?
Вот что я подумал:
Я создам другой файл JavaScript на стороне клиента, protect_keys.js
Он будет слушать Ctrl+ Shift+ I.
Если он вернется
true
(т.е. клавиши были нажаты), то это будутlog
клавиши.
Однако это не остановит пользователя от непосредственного использования Devtools.
источник
Ответы:
Вы буквально не можете запретить пользователям получать доступ и изменять контент, который вы им отправляете. Вы не можете контролировать браузер, или какой браузер они используют, или они фактически загружают ваш исходный код через браузер. Вы выполняете свой код на устройстве другого человека. Вы не должны и не можете предполагать что-либо о целостности этого устройства.
Если у вас есть код, который вы не хотите раскрывать, не отправляйте его в браузер. Вместо этого позвольте браузеру отправить запрос на сервер, где вы выполняете секретный код.
В качестве конкретного примера, не проверяйте пароли на клиенте. Клиент может быть изменен, чтобы всегда сообщать серверу «пароль был верным». Вместо этого аутентификация должна происходить на вашем доверенном сервере.
источник
Ты не можешь Одно из фундаментальных правил вычислений: нельзя доверять клиенту . Какую бы хитрую схему вы ни думали, я могу обойти ее, если буду контролировать клиента.
источник
Почему вы не хотите, чтобы код был изменен?
Безопасность? Доверять? Коммерческая тайна?
Тогда не отправляйте код, попросите клиента отправить запрос и верните результат. Может быть, не частный или привилегированный результат, просто готово достаточно для многих пользовательских интерфейсов.
Потому что слегка измененные версии вашего собственного кода наносят ущерб вашей прибыли?
Используйте затенение кода, манипулятор имени и тривиальные сегменты кода.
Эти методы поднимают планку на реальном уровне навыков, и инструменты, необходимые для создания небольшого варианта вашего сайта. Просто имейте в виду, что эти методы могут замедлить ваш код, могут привести к появлению интересных и бессмысленных ошибок и сообщений об ошибках, и все же их может преодолеть кто-то, обладающий необходимыми инструментами и / или навыками. Так что действительно подумайте, стоит ли это того. В конце концов, любой мог просто написать один и тот же код.
источник