Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.93/29: Рейтинг темы: голосов - 29, средняя оценка - 4.93
365 / 124 / 22
Регистрация: 08.01.2015
Сообщений: 1,418
Записей в блоге: 2

Делаю простую панель управления сайтом. Как спрятать код на JS?

12.04.2017, 20:30. Показов 6411. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для управления сайтом используется, в том числе, и некоторый код на JS. Но, ведь он может быть скачан с сайта (в отличие от РНР). Вопрос такой: как обезопасить его от просмотра (скачивания) посторонними?
Я рассматривал вариант - хранить jS-код у себя на локальном компьютере. Это хорошая идея, но тогда как его подгружать к страницам сайта? Препятствует политика кроссдоменного запрета. Можно, конечно, букмарклетом, но это уже неудобно: каждый раз, при необходимости изменений, придется его переделывать. Да и, честно говоря, неохота каждый раз вспоминать о необходимости запуска букмарклета.
Знаю, что можно сделать запрет в .htaccess, но, судя по советам специалистов, это - ненадежный способ.
В общем, посоветуйте, пожалуйста, какой-то свежий взгляд на это.

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

Добавлено через 8 минут
И ,еще вопрос: как заходить в нее? Т.е. это надо будет сделать какую-то ОДНУ страницу входа, доступную только для меня (например, по IP)?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.04.2017, 20:30
Ответы с готовыми решениями:

Панель управления сайтом
Можно ли в хтмл создать панель интерфейса, для редактирования данных контента на хостинге.

СВЧ Samsung Панель управления не реагирует на нажатия , СВЧ Samsung часто вылетает панель управления может кто знает как обойт
СВЧ Samsung Панель управления не реагирует на нажатия .

Как спрятать ВСЕ элементы управления при открытии книги?
Как состряпать такое, чтобы при открытии книги все панели инструментов и строка состояния в том числе пропадали, а при закрытии этой книги...

40
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
12.04.2017, 20:33
Цитата Сообщение от Htext Посмотреть сообщение
Вопрос такой: как обезопасить его от просмотра (скачивания) посторонними?
Никак. Клиентский код нельзя спрятать, так же как нельзя спрятать html. Максимум, что можно сделать - это записать его в одну строку без пробелов и переносов, дабы свести его читабельность до значения, близкого к нулю.

PS
Htext, а что такого тайного будет в Вашем JS-коде? Или Вы планируете создать подобие БД на клиентском языке??? Надеюсь, что нет.
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
12.04.2017, 23:56
Цитата Сообщение от Htext Посмотреть сообщение
как обезопасить его от просмотра (скачивания) посторонними?
Как уже ответили выше - никак. Максимум, что можно сделать - это применить различные методы обфускации. Например: "невидимый" JS: http://codepen.io/anon/pen/wdvPyp
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<div id="code">
                     
                
                 
         
                  
                
                    
                  
         
                    
         
         
                        
                        
                     
                       
                      
                       
                          
                    
                        
         
             
                
         
                 
            
         
                    
                
                  
                
                 
                  
           
                  
                
                    
                  
            
                    
 
</div>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function decode() {    
  xcode = document.getElementById('code').innerHTML.split("\n");
  result = '';
  char_true = '\t';
  for(i in xcode) {        
    encoded = '';
    for(j in xcode[i]) encoded += (xcode[i][j] == char_true)? "1" : "0";
    chr = parseInt(encoded, 2)
    result += String.fromCharCode(chr.toString(10))
  }
  res = result.substr(1, result.length - 3);
  return res;
}
 
eval(decode());
Цитата Сообщение от Htext Посмотреть сообщение
хранить jS-код у себя на локальном компьютере. Это хорошая идея
Это никакая идея. Кто угодно может просмотреть результат запроса так же как и обычный JS-код. Вкладка network в инструментах разработчика (Chrome).
Цитата Сообщение от Htext Посмотреть сообщение
Препятствует политика кроссдоменного запрета
Существуют CORS-заголовки, которые разрешают кроссдоменные запросы.
Цитата Сообщение от Htext Посмотреть сообщение
Знаю, что можно сделать запрет в .htaccess
Не знаете. Даже не представляю какое отношение .htaccess имеет к сабжу.

Добавлено через 2 минуты
PS. Приведённый выше метод обфускации крайне извращённый и его не рекомендуется использовать в реальных проектах. В любом случае толкового юзера этим не обмануть. Применяйте лучше минимизатор.
1
Фрилансер
735 / 352 / 96
Регистрация: 05.05.2014
Сообщений: 2,621
13.04.2017, 10:11
Цитата Сообщение от Htext Посмотреть сообщение
Для управления сайтом используется, в том числе, и некоторый код на JS. Но, ведь он может быть скачан с сайта (в отличие от РНР).
js код, который необходимо спрятать, нужно переписать на PHP, а результат выполнения отправлять клиенту. По-другому никак.
1
365 / 124 / 22
Регистрация: 08.01.2015
Сообщений: 1,418
Записей в блоге: 2
13.04.2017, 14:22  [ТС]
Цитата Сообщение от Пифагор Посмотреть сообщение
а что такого тайного будет в Вашем JS-коде?
Ну ,не хотелось бы, чтобы каждый мог знать конкретную технологию обращения к программам, расположенным на сайте. Понятно, что пароль (тем более, я сделал двуступенчатую авторизацию, при помощи двух последовательных запросов AJAX), точнее, хэш пароля с солью. Но, все же. Мало ли.

Добавлено через 10 минут
Цитата Сообщение от Balanaar Посмотреть сообщение
Кто угодно может просмотреть результат запроса
Не сможет. Если погружать этот код только у себя на компьютере в процессе операций со страницей. JS-код в сеть при этом передаваться не будет. Все, что пойдет в сеть - это краткие команды серверу (для их формирования и нужен код JS).
Если и смогут подсмотреть (путем MITM, например), так разве что передаваемые команды.
Другое дело, что здесь потребуется либо, как минимум, букмарклет, либо плагин. Ибо мешает междоменная политика.

Добавлено через 2 минуты
Цитата Сообщение от Balanaar Посмотреть сообщение
Не знаете.
Ну, почему. Можно сделать разрешение доступа к определенным файлам, например, только с моего IP. Точнее, только с моей сети.
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
13.04.2017, 14:22
Так... Если я правильно вас понимаю, то вы хотите слать запросы на некую машину, на которой запускается JS-код, выполняется обработка и ответ высылается обратно? А... чем вам PHP-то для этих целей не подходит, ещё раз?
0
365 / 124 / 22
Регистрация: 08.01.2015
Сообщений: 1,418
Записей в блоге: 2
13.04.2017, 14:31  [ТС]
Цитата Сообщение от Balanaar Посмотреть сообщение
Существуют CORS-заголовки, которые разрешают кроссдоменные запросы.
Не могли бы Вы меня просветить, а конкретно это реализовать для подключения к загруженной странице с сайта (по протоколу http) JS-код, расположенный на локальном компьютере (по протоколу file). Т.е. есть 2 фрейма: в один грузится страница с сайта, в другой - файл с локального компьютера (с моего т.е.). Как наладить между ними взаимодействие? Мне никак это не удается.
Если же идти по пути передачи JS-кода через GET-запросы (установка таймеров, прослушивание изменений URI), то это получится - "открыть ворота", т.е. создать уязвимость.

Добавлено через 3 минуты
Цитата Сообщение от Balanaar Посмотреть сообщение
вы хотите слать запросы на некую машину, на которой запускается JS-код, выполняется обработка и ответ высылается обратно?
Не совсем. Я хочу со своей локальной машины слать запросы на страницу (т.е. на сайт). Но, для этого необходим JS, которого в коде страницы нет (и вообще на сервере его тоже нет). Вот если бы было возможно подгрузить JS с моего локального компьютера...
Т.е. я знаю, что можно подгрузить JS, находящийся на НЕлокальном компьютере (так погружают ту же jQuerry, например). А вот с локальным - проблема.
0
Эксперт JS
2463 / 1769 / 625
Регистрация: 11.07.2016
Сообщений: 4,067
13.04.2017, 14:33
Если речь идёт именно о кроссдоменных фреймах - то никак
0
365 / 124 / 22
Регистрация: 08.01.2015
Сообщений: 1,418
Записей в блоге: 2
13.04.2017, 15:05  [ТС]
Цитата Сообщение от pro_100_gram Посмотреть сообщение
js код, который необходимо спрятать, нужно переписать на PHP, а результат выполнения отправлять клиенту
Вы меня натолкнули на такую мысль: а что, если, в самом деле, подгружать код дополнительный JS к тем и только к тем страницам, с которыми я собираюсь иметь дело через адм. панель? Иными словами, при обращении к странице через некоторую программу РНР последняя, предварительно, вставляет в ее код что-то типа:
HTML5
1
<script src="http://site/file.js"></script>
И уже только после этого файл отдается клиенту (ко мне в браузер).
Правда, при этом, опять-таки, так можно подгрузить ЛЮБОЙ JS-код, кроме расположенного у меня на локальном компьютере.
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
13.04.2017, 15:09
Htext, насчет AJAX в любом случае существует некий файл-обработчик запросов, который содержит исключительно клиентские скрипты, которые может просмотреть любой человек, мало-мальски знакомый с принципом работы AJAX. Однако можно сделать так, чтобы при прямом обращении к файлу была произведено перенаправление на ту или иную страницу сайта. С другой стороны, ничего не мешает скачать этот файл и посмотреть его содержимое. Надо просто озадачится и внятно изучить меры безопасности при AJAX-запросах. А там пусть хоть кто смотрит код.
0
365 / 124 / 22
Регистрация: 08.01.2015
Сообщений: 1,418
Записей в блоге: 2
13.04.2017, 15:23  [ТС]
Кстати, если не использовать подобную строчку, а попросту дописать требуемый код JS в конец файла (и потом отдать его клиенту), тогда файла file.js - вообще не будет на сервере. А сам JS код может храниться, по сути, где угодно: хоть в базе данных, хоть в файле РНР (который может быть открыт и считан программой, как обычный текстовый файл). Этот код можно и (обратимо) зашифровать, по идее.

Добавлено через 8 минут
Цитата Сообщение от Пифагор Посмотреть сообщение
насчет AJAX в любом случае существует некий файл-обработчик запросов, который содержит исключительно клиентские скрипты, которые может просмотреть любой человек
Именно. Потому-то я и хочу, чтобы этот файл(ы) находился исключительно у меня, на локальном компьютере. И хотел бы подгружать его именно со СВОЕГО компьютера. Если этот обработчик будет погружаться динамически - после открытия страницы у меня на компьютере - знать о нем буду только я. Ну, и сервер, на который пойдет запрос, генерируемый обработчиком.
Если подробнее. Я делал букмарклет, который, скажем, мог заменить фон, цвет шрифта на любой открываемой мною странице (неважно, с какого сайта). Ну, почти на любой. Правда, не всем сайтам это нравится, некоторые мешают это делать. Но, чтобы не мешали, можно использовать автономный просмотр.
Но, писать большой JS-код обработчика в виде букмарклета - удовольствие сомнительное. Да и неохота каждый раз его запускать - при открытии очередной новой страницы.
А плагин для браузера я сделать пока не смогу - нет у меня такой квалификации.
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
13.04.2017, 15:28
Htext, если Вам так важно использование клиентских скриптов пополам с малиновым вареньем вместе с серверными технологиями и нужен достаточно высокий уровень безопасности, то ИМХО, Вам путь к Node.js.
0
365 / 124 / 22
Регистрация: 08.01.2015
Сообщений: 1,418
Записей в блоге: 2
13.04.2017, 15:51  [ТС]
Цитата Сообщение от Пифагор Посмотреть сообщение
Вам путь к Node.js
В смысле, установить сервер Node.js у себя на лок. компьютере?
Я только краем уха слышал об этой технологии. Одно время даже собирался опробовать.
Не могли бы Вы рассказать, как она может помочь в моем случае?
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
13.04.2017, 15:54
Htext, в двух словах на рассказать. Лучше почитайте.
0
$ su
 Аватар для ntlinuxnt
1605 / 520 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
13.04.2017, 22:22
http://new.veryline.ru/clients/new.veryline.ru/
Попробуйте достать js из папки /api/
0
Эксперт HTML/CSS
 Аватар для Shakalaka
653 / 556 / 322
Регистрация: 27.01.2015
Сообщений: 1,374
13.04.2017, 23:25
Цитата Сообщение от ntlinuxnt Посмотреть сообщение
Попробуйте достать js из папки /api/
этот?
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
//if((self.parent&&!(self.parent===self))&&(self.parent.frames.length!=0)){
//  function inits() {
//      alert('А ФИГУШКИ');
//  }
//} else {
    function inits(){
    var jQuery;
    if (window.jQuery === undefined) {
    var script_tag = document.createElement('script');
    script_tag.setAttribute("type","text/javascript");
    script_tag.setAttribute("src","//new.veryline.ru/clients/new.veryline.ru/servis/js/jquery-3.1.1.js");
    script_tag.onload = scriptLoadHandler;
    script_tag.async=true;
 
    script_tag.onreadystatechange = function () { // IE
      if (this.readyState == 'complete' || this.readyState == 'loaded') { scriptLoadHandler(); }
    };
 
    (document.getElementsByTagName("HEAD")[0] || document.documentElement).appendChild(script_tag);
 
        //console.log('not jquery');
    } else { 
      $ = window.jQuery; 
        include_main();
        //console.log('yes jquery');
    }
 
    function scriptLoadHandler() {
      $ = window.jQuery.noConflict(true);
      include_main();
    }
 
 
    function include_main(){
 
      var style = document.createElement('link');
      style.href = '//new.veryline.ru/clients/new.veryline.ru/servis/css/ceiling_01.css';
      style.type = 'text/css';
      style.rel = 'stylesheet';
      document.getElementsByTagName('HEAD')[0].appendChild(style);
 
      
 
      var script = document.createElement('script');
      script.src = '//new.veryline.ru/clients/new.veryline.ru/servis/js/all.min.js';
      script.type = 'text/javascript';
      script.async=true;
      document.getElementsByTagName('HEAD')[0].appendChild(script);
 
      var script = document.createElement('script');
      script.src = '//new.veryline.ru/clients/new.veryline.ru/servis/js/jsgl.js';
      script.type = 'text/javascript';
      script.async=true;
      document.getElementsByTagName('HEAD')[0].appendChild(script);
 
      
 
      var script = document.createElement('script');
      script.src = '//new.veryline.ru/clients/new.veryline.ru/servis/api/core.js.php?key=A000000001';
      script.type = 'text/javascript';
      script.async=true;
      document.getElementsByTagName('HEAD')[0].appendChild(script);
 
 
    };
};
//}
 
 
document.addEventListener("DOMContentLoaded", inits);
0
$ su
 Аватар для ntlinuxnt
1605 / 520 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
14.04.2017, 12:48
Shakalaka, Какой нибудь из этих
0
Эксперт HTML/CSS
 Аватар для Shakalaka
653 / 556 / 322
Регистрация: 27.01.2015
Сообщений: 1,374
14.04.2017, 14:18
Цитата Сообщение от ntlinuxnt Посмотреть сообщение
Какой нибудь из этих
так это и не js, это php. Как этот js у вас на сервере генерится известно только вам, но то что вы браузеру отдаете, то что управляет вашим канвасом, это все можно посмотреть, и я вам сбросил пример того, что получает браузер.
0
$ su
 Аватар для ntlinuxnt
1605 / 520 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
14.04.2017, 15:45
Цитата Сообщение от Shakalaka Посмотреть сообщение
так это и не js, это php. Как этот js у вас на сервере генерится известно только вам, но то что вы браузеру отдаете, то что управляет вашим канвасом, это все можно посмотреть, и я вам сбросил пример того, что получает браузер.
Дык нет же, это как раз таки js. Там вся основная логика.
0
Эксперт HTML/CSS
 Аватар для Shakalaka
653 / 556 / 322
Регистрация: 27.01.2015
Сообщений: 1,374
14.04.2017, 16:34
Цитата Сообщение от ntlinuxnt Посмотреть сообщение
Там вся основная логика
основная логика чего? все что вы исполняете на клиенте, оно уже на клиенте. если вы проводите какие-либо вычисления на сервере и отдаете клиенту только результат - то не важно на каком языке произойдут вычисления(они на сервере), но результат будет на клиенте, я не понимаю что вы пытаетесь сказать? любой js выполняющийся в браузере - он уже там и его можно увидеть
Миниатюры
Делаю простую панель управления сайтом. Как спрятать код на JS?  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.04.2017, 16:34
Помогаю со студенческими работами здесь

Что я делаю не так с сайтом?
www.life-mp3.ru в индексе яндекса практически все страницы, но переходов от него нет совсем. пожалуйста дайте конструктивную критику...

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

Как открыть панель управления
Вопрос собственно тривиальный, но я его не решил. Есть ссылка: http://www.pctools.com/guides/registry/detail/61/ Там есть GUIDs...

Делаю по урокам простую CMS для блога, но выводит ошибку
Такая проблема делал по урокам cms, до этого учил основы и разбирался. Хотел начать с простенького, где есть все основные атрибуты сайта....

Нужен элемент управления со сворачиваемым списком, похожий на панель элементов управления в VS
Нужен элемент управления со сворачиваемым списком, как панель элементов в VS, желательно с возможностью установки чекбокса есть набор...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru