На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Serafim, fatalist
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
    > Безопасность пароля в скрипте
      Написал скрипт на php для выгрузки названий муз треков и прочих параметров из бд (mysql) в xml файл. Пароль, юзер, имя бд, все в открытую прописал в скрипте.
      При обращении к странице, скрипт выдает xml. Могут ли хакерюги вытащить пароли/логины к бд? Права у файла 0644.
        Ты ещё спрашиваешь? :huh: Ты сам же "хакнул" свой же скрипт.
          Каким образом я его хакнул? Можете подробнее объяснить что я сделал неправильно? При открытии скрипта в брвузере скрипт выдает не свой код, а xml в котором нет паролей.
          Подскажите пожалуйста как правильно сделать.

          Может я объяснил не совсем подробно...

          Скрипт лежит в корне сайта, сайт работает с бд мускула. Скрипт я открываю в браузере
          по адресу:

          http://mydomen.ru/script.php

          и вместо кода скрипта (в котором прописаны логин пароли к бд)
          я получаю xml файл который формирует этот скрипт.

          типа <xml тратата...
          <music>музыка 1</music>
          итд...

          Ну а как скрипту то инфу из мускула получить, если пароль/логин к бд для коннекта в нем не прописать?
          Скрипт должен выдавать юзеру инфу при обращении к скрипту. инфу ему где брать? естественно из бд сайта, ну а коли скрипт не знает логина/пароля, то как он подключится к бд???

          Тут же наверняка есть люди которые на пхп целые сайты писали, а не простенькие скрипты, и естественно эти сайты работали в упряжке с базой данных.
          Ну уж для этих людей это элементарный вопрос - как защитить пароль/логин/bdname от хакерюг...
          Сообщение отредактировано: Rzonex -
            Тогда всё зависит от твоего кода :-?
              M
              Удалено по просьбе Rzonex
              Сообщение отредактировано: Serafim -
                Цитата Rzonex @
                от, все права на данный код принадлежат мне. Попрошу не копировать для своих нужд, вы не имеете права копировать участки кода или модифицировать его каким либо образом, так же вы не имеете права использовате его, без моего согласия. если вы нарушите данные правила вы будете осуждены по закону о авторском праве рф, статья, хз какая сами нагуглите.

                :facepalm: Ты серьёзно думаешь, что кому-то нужен это... Кхм... Поделие?

                1) mysql - не поддерживается. Из чего можно сделать вывод что у тебя древняя версия PHP, которая может содержать дыры. Начни с актуализации ПО. PHP 7.1 минимум, вместо mysql - mysqli или PDO.
                2) На строке 13 у тебя вообще ошибка, даже парсер побился

                В остальном, ничего критичного. Ну кроме крайне отвратного кода, но это уже мелочи :D

                Добавлено
                Ну и в функции header кодировка не корректно указана.

                Добавлено
                Все права на данные рекомендации принадлежат мне. Попрошу не использовать мои рекомендации, озвученные выше без моего согласия на это. Прошу не запоминать и не выполнять для личных нужд. Они охраняются законом об авторском праве ну и т.д. и т.п. :lol:
                  Знаешь что? Кхм.. я на пхп 2 дня программирую, можно иметь это в виду и не гнобить новичка? :D
                  ПХП на сервере вроде не старая, это наверное я использовал старые и неактуальные функции подключения и запросов к бд...
                  Подсказал бы новичку как исправить...

                  Цитата
                  :facepalm: Ты серьёзно думаешь, что кому-то нужен это... Кхм... Поделие?

                  >:( :'( :'( :'( :'( :'( :'(

                  А кодировка почему неправильная? utf-8 нужно было ставить?

                  Цитата
                  Все права на данные рекомендации принадлежат мне. Попрошу не использовать мои рекомендации, озвученные выше без моего согласия на это. Прошу не запоминать и не выполнять для личных нужд. Они охраняются законом об авторском праве ну и т.д. и т.п. :lol:

                  Ага, затролил новика, поздравляю.

                  А если честно, то подобные скрипты от 2к продаются и некоторым халява очень даже нужна. Скрипт маленький, шустрый и соответственно без дыр, но свои функции он выполняет не хуже чем его большие братья.
                  Сообщение отредактировано: Rzonex -
                    Цитата Rzonex @
                    ПХП на сервере вроде не старая, это наверное я использовал старые и неактуальные функции подключения и запросов к бд...

                    В актуальной версии такого просто нету http://php.net/manual/ru/intro.mysql.php ;)
                    Цитата
                    Это расширение устарело с версии PHP 5.5.0, и удалено в версии 7.0.0

                    Делаем вывод, что у тебя максимум 5.6, а актуальная 7.2. Чувствуешь разницу? =)

                    Добавлено
                    Цитата Rzonex @

                    А кодировка почему неправильная? utf-8 нужно было ставить?

                    Нет, в вебе принято писать windows-1251, вместо cp1251. Так что есть подозрения, что может где-то не работать. Но если есть хоть какая-то возможность, хоть минимальная, всегда используй utf-8. Нервов сбережёшь больше :)

                    Добавлено
                    Цитата Rzonex @
                    Ага, затролил новика, поздравляю.

                    Сам начал :-?

                    Добавлено
                    Цитата Rzonex @
                    А если честно, то подобные скрипты от 2к продаются и некоторым халява очень даже нужна

                    :lool:

                    Добавлено
                    Цитата Rzonex @
                    Скрипт маленький, шустрый и соответственно без дыр, но свои функции он выполняет не хуже чем его большие братья.

                    Нет, не выполняет. Он не надёжный (например, вставка значений в xml без экранирования), может привести к проблемам (вывод данных без буферизации, отсутствие проверок и проч), физически не работает на современном ПО (тот же самый mysql), не самодостаточен (нет миграций, нет тестов, нет автолоадинга и т.д.).
                      Цитата
                      вставка значений в xml без экранирования

                      это ты про то, что я прям в скрипте логины пароли к бд прописал?

                      Цитата
                      вывод данных без буферизации

                      сначала собрать все в одну переменную, а потом выводить?

                      Цитата
                      отсутствие проверок

                      сделаю.

                      Цитата
                      физически не работает на современном ПО (тот же самый mysql), не самодостаточен (нет миграций, нет тестов, нет автолоадинга и т.д.).


                      не самодостаточен - можешь подробнее написать про это и миграции, тесты, автолоадинг?

                      Цитата
                      Делаем вывод, что у тебя максимум 5.6, а актуальная 7.2. Чувствуешь разницу? =)

                      Да пхп действительно 5.6 спросил в супорте...
                      А если определить версию пхп и в зависимости от нее использовать разный набор функций? Это и будет миграция верно?)
                      Сообщение отредактировано: Rzonex -
                        Цитата Rzonex @
                        сначала собрать все в одну переменную, а потом выводить?

                        Если у тебя произойдёт что-либо до вызова header, то у тебя всё посыпется с ошибками. Для этого используют буферизацию: http://php.net/manual/ru/ref.outcontrol.php и/или перехват исключений.

                        Если такая же ошибка произойдёт в коде, то у тебя точно так же в середине вывода она и вставится.
                        ExpandedWrap disabled
                          <tag>
                            <tag2>Olololo</tag2>
                            <tag3 value="PHP Fatal Error in file blabla.php on line 42
                          Stack Trace:
                          #0
                          ...
                          ...


                        Это, кажется, не совсем нормально. Опять же перехват исключений нужен. В этом случае всё, что набилось в буфер гасится, а вместо этого выводится сообщенька об ошибке "Что-то пошло не так". Логично? =)
                          Цитата Serafim @
                          Это, кажется, не совсем нормально. Опять же перехват исключений нужен. В этом случае всё, что набилось в буфер гасится, а вместо этого выводится сообщенька об ошибке "Что-то пошло не так". Логично? =)

                          Это не критично, если в случае ошибки часть кода с паролями не выйдет... Принимающая сторона все равно проверяет целостность xml, зачем мне у себя проверять и делать за них работу? Проверяют? Ну и пускай проверяют, мне работы меньше)))

                          Меня интересует только - можно ли как нибудь доступ к паролю бд получить или нет?
                            Цитата Rzonex @
                            не самодостаточен - можешь подробнее написать про это и миграции, тесты, автолоадинг?

                            Миграции — это что-то вроде системы контроля версий для базы данных. Сейчас БД отсутсвует. В жизни же нажимается кнопка (в идеале, конечно через докер, но не суть) и разворачивается база данных. Т.е. по факту при взаимодействии с БД - её версионируемая структура.


                            Тесты: https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%...%BD%D0%B8%D1%8F Параллельно ещё применяют CI для автоматической сборки проекта, в результате любое изменение запускает набор тестов и делает вывод, что работает, а где поломалось. Например, в одном из моих проектиков: https://travis-ci.org/railt/railt/jobs/318373707 Как видно по буковкам "E" - поломалось 32 теста из 1185ти тестов (5934 проверок). А внизу даже рисуется красиво какие файлы и как были протестированы (сколько проценотов кода протестировано на работоспособность в любых условиях).


                            Автолоад: http://php.net/manual/ru/language.oop5.autoload.php - это когда у тебя в программе только один require и ты вообще не думаешь о подключении чего-либо.

                            Вот тут есть вообще вся информация о том, как надо писать на этом языке: http://getjump.me/ru-php-the-right-way/ :)

                            Добавлено
                            Цитата Rzonex @
                            Это не критично, если в случае ошибки часть кода с паролями не выйдет...

                            Если кто-то на сервере забудет отключить вывод ошибок, то выведет ;)

                            Добавлено
                            Сам проверь на примере, будет ли виден пароль или нет :whistle:
                            ExpandedWrap disabled
                              $password = 'My Super pass';
                               
                              function database_connect($var) {
                                  throw new LogicException('Тут произошла ошибка');
                              }
                               
                              database_connect($password);
                              Цитата Serafim @
                              Если кто-то на сервере забудет отключить вывод ошибок, то выведет

                              Супорт говорит что с их стороны все защищено...
                              Может пароли логины в отдельном файле прописать и читать их скриптом оттуда?
                              На счет остального - а нужно оно такому маленькому скрипту? Вот добавить поддержку всех версий пхп это да, было бы неплохо, а насчет остального сомневаюсь, больше кода - больше дыр.
                              Вот ты добавляешь лишний код в свои проекты - всякие там миграции-фигации вот у тебя и:
                              Цитата Serafim @
                              поломалось 32 теста из 1185ти тестов

                              :D :D :D

                              Цитата
                              Сам проверь на примере, будет ли виден пароль или нет :whistle:

                              вот так скрипт отработал...
                              ExpandedWrap disabled
                                $password = 'My Super pass'; function database_connect($var) { throw new LogicException('Тут произошла ошибка'); } database_connect($password);


                              Моему скрипту такое грозит?

                              Хватит тролить новичка... :'(

                              Я на пхп 2 дня работаю, но уже начинаю ненавидеть этот язык...
                              Сообщение отредактировано: Rzonex -
                                Цитата
                                На счет остального - а нужно оно такому маленькому скрипту?

                                Тебе решать, насколько качественным и надёжным должен быть результат :-?

                                Цитата
                                а насчет остального сомневаюсь, больше кода - больше дыр.

                                Не факт.

                                Цитата
                                Вот ты добавляешь лишний код в свои проекты - всякие там миграции-фигации вот у тебя и:

                                Это значит лишь то, что я уверен, что и где перестало работать. А ещё то, что я ничего не делая знаю в каких ситуациях оно не работает.

                                Цитата
                                вот так скрипт отработал

                                Ты потерял открывающий тег php. Мог бы подумать чуток, а не бездумно копировать ;)

                                Цитата
                                Я на пхп 2 дня работаю, но уже начинаю ненавидеть этот язык...

                                Прошу заметить, он считается одним из самых простых :crazy:
                                  Цитата Serafim @
                                  Ты потерял открывающий тег php

                                  тогда все гуд
                                  ExpandedWrap disabled
                                    Страница недоступна


                                  Цитата Serafim @
                                  Мог бы подумать чуток, а не бездумно копировать

                                  Ты слишком предвзят относишься к тому, кто работает с языком 2 дня, не считаешь?
                                  Ты меня совсем загнобил, это я должен знать, и то, и третье... Некрасиво кичиться своими знаниями.
                                  Вот попросил бы ты у меня помощи в коде для блицмакса, я бы над тобой не издевался а дал бы четкий ответ - что и где поправить...
                                  А еще спросил бы - "Собираешься ли ты изучать этот язык, или тебе нужна единичная помощь?"
                                  Я вот например в ближайшей перспективе не хочу пхп учить, мне своих языков хватает.
                                  К примеру, прежде чем писать этот скрипт я за час, без проблем написал аналогичный на своем языке -
                                  подключился к бд программно, собрал все нужное в массивы, сформировал xml. Проблема была только в скорости
                                  работы, так как программа работала с удаленной бд - было не особо быстро.

                                  ПЫ.СЫ. Раз уж ты модератор, можно тебя попросить мой код в 3 моем посте удалить? Может оно и нафиг никому не нужно, как ты говоришь, но мне так спокойнее жить. Спасибо.
                                  Сообщение отредактировано: Rzonex -
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,0573 ]   [ 16 queries used ]   [ Generated: 28.03.24, 18:16 GMT ]