За последние 24 часа нас посетили 31083 программиста и 1417 роботов. Сейчас ищут 922 программиста ...

Node.JS Mysql

Тема в разделе "JavaScript и AJAX", создана пользователем Danil005, 15 июн 2017.

  1. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Здравствуйте, у меня появился вопрос: "Как зашифровать пароль, если использую плагин mysqljs."
    А конкретней:
    Код (Javascript):
    1. var mysql      = require('mysql');
    2. var connection = mysql.createConnection({
    3.   host     : 'localhost',
    4.   user     : 'me',
    5.   password : 'secret',
    6.   database : 'my_db'
    7. });
    8.  
    9. connection.connect();
    10.  
    11. connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
    12.   if (error) throw error;
    13.   console.log('The solution is: ', results[0].solution);
    14. });
    15.  
    16. connection.end();
    Как мне спрятать от чужых глаз эти данные?
     
  2. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    node.JS это серверный JS, разве нет?
    Эти скрипты лежат на сервере и они скрыты от посторонних глаз (но это не точно).
     
  3. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    То есть их прочитать нельзя?
     
  4. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    И как передать логин пользователя в серверную часть?
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    расскажи, что ты делаешь, зачем и почему
     
  6. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Этот код лежит на сервере. от кого прятать? от самого себя?
    тот кто имеет доступ на сервер сможет всегда его расшифровать. если будет нужно. так что шифровать тут нет смысла.
    а вот вынести настройки подключения в отдельный файл - смысл есть. тогда в самом коде пароля не будет. можно код хоть на гитхаб выложить хоть на форуме опубликовать.
     
    Fell-x27 нравится это.
  7. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Вообщем я делаю обычный чат на node.js + php + mysql. Мне нужно как-то передать логин, уже проверенный на php сервере в node. При этом безопасно и чтобы не лезть в дебри авторизации express.
    --- Добавлено ---
    У меня появилась идея, создать просто input и после этого внести туда session, id и timeout-session, а в последствии передавать их на сервер.
    После делать запрос на стороне сервера по этим данным и сверять их, если данные не схожи, то запретить отправку.
    --- Добавлено ---
    Но тут появляется вопрос, если пользователь сможет подобрать соль такого вида: f2b1bc6e2337226d7aaa1594a2d7c5d0a8b4e40aa49c3ecc8b5eaa7475ea9a01, но не сможет подобрать конкретный timeout - отправить не получиться, но все же если сможет подобрать, то это не будет безопасным способом.
     
  8. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.298
    Симпатии:
    218
    Адрес:
    Default city
    Just one question, why ?
     
    denis01 нравится это.
  9. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    @Abyss, потому что сайт написан на php, а переписывать под node.js не хочется.
     
    denis01 нравится это.
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  11. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Без node.js что ли?
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    да, без.
    нафига нужна эта нода со всеми её проблемами, если есть охуенная центрифуга на го написанная стабильная и многопоточная, быстрая и охуенная. А ещё она охуенная, я говорил?
     
    TeslaFeo и denis01 нравится это.
  13. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Так-с, ну ее нужно мне изучать :c
    --- Добавлено ---
    {
    "client": "UNIQUE CLIENT ID SERVER GAVE TO THIS CONNECTION",
    "expires": "false",
    "expired": false,
    "ttl": 0
    }
    Куда такой код писать?
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    это данные какие-то. Там примеры есть для пхп и js
     
  15. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Как его вообще установить?
     
  16. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    а что там за проблемы?
     
  17. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Ну проблема с передачей php юзера в js формат ... Чтобы не светить пользователя: var username=<?=$username?>. Ну это грубо говоря.
    --- Добавлено ---
    А еще проверку нужно делать, но это мороки с node.js кучу новых запросов к бд...
    --- Добавлено ---
    @igordata , есть документация по PHP?
    --- Добавлено ---
    Вот грубо говоря тестовая страница с таким кодом:
    PHP:
    1. $client = new \phpcent\Client("http://localhost:8000");
    2. $client->setSecret("iOJoifj089u210r8amyvyn398vyn839u10984vglsjmdgbhsfulgtlkurehbutuhIUHKUbniurhiudshrliurty767398689hvkjsdnvkjahnbufhabiuhiu");
    3. $client->publish("main_feed", ["message" => "Hello Everybody"]);
    4. $history = $client->history("main_feed");
    5.  
    6. $client->broadcast(['example:entities', 'example:moar'], ['user_id' => 2321321, 'state' => '1']);;
    Что с ним делать и вообще как это работает, вот не знаю... В документации только JavaScrip вижу...
     
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    работает он сам по себе.

    у него есть API и вот класс для PHP который может делать всякое с центрифугой, например отправлять сообщеньки в каналы.

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

    для PHP в доке вот ссылка на https://github.com/centrifugal/phpcent, там есть примеры

    серверные методы описаны тут https://fzambia.gitbooks.io/centrifugal/content/server/api.html

    соотв. в твоём примере ты юзаешь broadcast, указываешь канал и данные, которые придут в этот канал (как отправил, так и придут). Т.е. "['user_id'=>2321321,'state'=>'1']" это просто некие данные, которые могут быть любыми, какими тебе удобно.

    Соотв. кто подписан на канал, в который ты постишь - все получат то, что отправил.

    А дальше в js ты уже должен что-то с этими данными сделать.

    попробуй.
     
    #18 igordata, 19 июн 2017
    Последнее редактирование: 19 июн 2017
  19. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Ага, понял, еще вопрос, а на сайте как центрифугу запускать? Потому что тут я просто запускаю .exe и все, или это работает как тупо консоль?
    --- Добавлено ---
    Тут описано, что я создаю поддомен. В конце концов получаю такой адрес: https://centrifuge.mydomains.com/api/
    А дальше что? Что внутри? Какой файл создать, дабы писать методы..
    --- Добавлено ---
    Грубо говоря, вот у меня есть Json файл, что с ним делать... Мне как-то не очень понятна инструкция ...
    Код (Text):
    1. {
    2.     "body": {
    3.         "channel": "$public:chat",
    4.         "data": {
    5.             "a1c2f99d-fdaf-4e00-5f73-fc8a6bb7d239": {
    6.                 "user": "2694",
    7.                 "client": "a1c2f99d-fdaf-4e00-5f73-fc8a6bb7d239",
    8.                 "default_info": {
    9.                     "first_name": "Alexandr",
    10.                     "last_name": "Emelin"
    11.                 },
    12.                 "channel_info": {
    13.                     "channel_extra_info_example": "you can add additional JSON data when authorizing"
    14.                 }
    15.             },
    16.             "e5ee0ab0-fde1-4543-6f36-13f2201adeac": {
    17.                 "user": "2694",
    18.                 "client": "e5ee0ab0-fde1-4543-6f36-13f2201adeac",
    19.                 "default_info": {
    20.                     "first_name": "Alexandr",
    21.                     "last_name": "Emelin"
    22.                 },
    23.                 "channel_info": {
    24.                     "channel_extra_info_example": "you can add additional JSON data when authorizing"
    25.                 }
    26.             }
    27.         }
    28.     },
    29.     "error": null,
    30.     "method": "presence"
    31. }
    --- Добавлено ---
    Как обработать данные канала. Эх, сколько вопросов..
     
  20. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Разобрался? Тоже интересуюсь данным вопросом... Хотел ноде устанавливать, а тут такое ))
     
  21. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ей указываешь конфиг, или рядом кладёшь (я не помню, глянь в доке) и просто запускаешь
    она висит
    я делал файлик, чтобы запускать как сервис, и всё.


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

    А на паблик каналах можно всем подключаться ко всем.

    Почитай в доке про это. Это просто.

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


    ну у центрифуги есть для js браузерного либа. Там можно подключиться к твоей работающей центрифуге, подписаться на каналы, будут приходить данные. Всё. А что с ними делать - твоя забота уже. :D
     
  22. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Проблема в том, что мне нужно на сервере, то есть на хостинге запускать.. А консоль не предоставляется. Я честно говоря не знаю, как запустить центрифугу на хостинге. Грубо говоря, про инсталляцию я толком ничего не увидел.. Запустить удалось, на локальном, это было просто.
    Но тут вообще все сложно... Как только я стал читать, я английский знаю, сдавал Кембридж и дело не в нем, а в понимании того, что там написана, а по сути ровно ничего. Я открыл вкладку https://github.com/centrifugal/phpcent и не могу разобраться, как, да что сделать... Я установил через composer все данные командой: composer require sl4mmer/phpcent, но ничего мне это не дало. Весь код работает, но как обрабатывать я не нашел. Тогда я пошел дальше и нашел эту ссылку: https://github.com/oleh-ozimok/php-centrifugo, здесь у меня вообще аут, потому что по какой-то причине он не хотел использовать use, хотя я все установил и все должно работать... Вообщем, с одной стороны она вроде и простая как палка, согласен, но только после того, как я разберусь, я понял принцип работы и да, это удобней чем Node, но вот, с socket.io я разобрался, а вот с центрифугой не могу... Если можно, то на примерах показать... Или "тыкнуть" пальцем в документации... Я не могу понять просто.
     
  23. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    когда кто-то написал сообщение, то ты аяксом ее посылаешь в пхп скрипт, а он уже пихает в центрифугу в нужный канал. И тогда сообщение уходит всем подписанным клиентам.

    про хостинг. Просто арендуй впс.
    --- Добавлено ---
    композер надо ешё а автолоад файлов полкючить. Смотри доку композера.
     
  24. Danil005

    Danil005 Активный пользователь

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Подключал.