За последние 24 часа нас посетили 22866 программистов и 1267 роботов. Сейчас ищет 781 программист ...

Безопасность сайта

Тема в разделе "PHP для профи", создана пользователем Konstant1n, 20 дек 2018.

  1. Konstant1n

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

    С нами с:
    14 авг 2017
    Сообщения:
    273
    Симпатии:
    1
    Адрес:
    Волгоград
    Привет!
    Написал сайт на PHP MVC:
    1. Пользовательская часть - только get методы, путь - site.local/. Т.е. пользователи только читают, форм у них нет.
    2. Админка - там уже можно редактировать заметки, загружать файлы, путь - site.local/admin/ - директория защищена паролем, т.е. настроены файлы .htaccess и .htpasswd - это норм, обойти же нельзя? Файлы загружаются в site.local/files/
    Читал, что взломщики загружают файлы в директории с правами 777. Как это через один хост в другой? Я бы хотел попробовать на примере своего сайта. попробовать загрузить и запустить загруженные файлы.

    Кстати, на сайте в роутер записаны пути, по которым может переходить пользователь (например page/1, article/3, короче формат site.local/article/число).

    И еще вопрос: php скрипты будут выполняться в директориях с правами != 777, например с правами 644?

    Можно ли отправить форму, например из www.site1.ru, указав в обработчик www.site2.ru/obrabotcik.php?
     
    #1 Konstant1n, 20 дек 2018
    Последнее редактирование: 20 дек 2018
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Этот адрес часто обстукивают различные боты в поисках админки. Лучше научиться как-нибудь скрывать админку, если она вообще нужна.

    Протокольная аутентификация/авторизация? Так мало кто делает. Все в основном используют куки.

    Если апач/пых может читать файлы, то они могут выполняться.

    Да, конечно. Заморочки могут быть только при использовании AJAX.
    --- Добавлено ---
    P.S. На обычных сайтах мне, например, нравится размещение админки на www-домене (или на любом другом): для авторизованных запросов выполняется админка, иначе – обычный 301-ый редирект (кроме POST-запроса для аутентификации).
     
    Konstant1n нравится это.
  3. Konstant1n

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

    С нами с:
    14 авг 2017
    Сообщения:
    273
    Симпатии:
    1
    Адрес:
    Волгоград
    Тогда, лучше уберу админку с хоста - будет только у меня в компе локалаьно. Все равно только я со своего ноута буду редактировать содержимое сайта.

    Куки. Да. Делал, давно. Есть свежий пример 2017-2018 гг.? Или хотя бы алгоритм... o_O

    Т.е., ты можешь отправить данные на мой обработчик? Какие данные о БД для этого понадобятся тебе (сначала установить соединение с БД, далее сделать запрос,...)?

    Правильно я понял: админка, например www.skr.ru, сам сайт - www.site.ru?
     
  4. Konstant1n

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

    С нами с:
    14 авг 2017
    Сообщения:
    273
    Симпатии:
    1
    Адрес:
    Волгоград
    Дополнение: в таком случае к БД будут доступны внешние подключения, а это не безопасно?
     
  5. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    А файлами есть возможность удаленно управлять?

    Они, может, и так доступны, проверь. Принципы защиты тут примерно такие же. Вплоть до использования нестандартного порта, подсчетов обстукивания порта перед его открытием и т.п. А если говорить о простом – используйте сложный пароль и периодически его меняйте. Для удобства можно совместить аутентификационные данные для доступа к БД и админке, т.е. не просто использовать одинаковые, а использовать админку, как оболочку к БД в плане аутентификации (имя БД конечно нужно прописать явно, если твоя админка не поддерживает выбор БД). Защиту от реал. хакеров, например шифрование трафика, пока затрагивать не будем.

    Их полно. Основная проблема – это проблема выбора. Можно и самому написать.

    ??? Зачем мне данные о БД? Состав полей, принимаемых обработчиком, я могу подсмотреть в форме. Кстати, один из способов защиты админки – куда-нибудь убрать форму входа, вплоть до локалки (закинуть на флешку или телефон, например).

    Как вариант. Но вообще я имел в виду: site.ru – морда, www.site.ru – админка, если в запросе присутствует валидный ключ авторизации, иначе – редирект на осн. хост.
     
  6. Konstant1n

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

    С нами с:
    14 авг 2017
    Сообщения:
    273
    Симпатии:
    1
    Адрес:
    Волгоград
    )) мда... нет. Лан админку оставлю, спрячу куда-нибудь.

    +++

    т.е. если АВТОРИЗАЦИЯ == TRUE, то разрешаем подключение к БД и прочие операции с БД?

    точно, соединение к БД создается же в обработчике.

    Хорошая идея. А как тогда авторизацию пройти, локально (в куках сохранится флаг "авторизация пройдена" и этот флаг увидит сайт)?

    понял. www.sitr.ru/тут_ключ_авторизации - т.н. токен?
     
  7. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Не. Если при подключении к БД с введенными аутентификационными данными доступ запрещен (или, как вариант, произошла любая ошибка подключения), не пускать в админку.

    Речь была о том, чтобы убрать только форму входа, а обработчик оставить.

    Ключ обычно передается в заголовках, в тех же куках (кстати, отчасти это тоже связано с безопасностью; в нашем ПО, например, вообще не используется ключ в адресе). Да, можно токеном называть.
    --- Добавлено ---
    Если не считать всякие подписки/отписки, активации/деактивации и т.п.
     
  8. Konstant1n

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

    С нами с:
    14 авг 2017
    Сообщения:
    273
    Симпатии:
    1
    Адрес:
    Волгоград
    Может в сторону SSL копать?
    --- Добавлено ---
    т.е. header(token)? заголовок же перехватить невозможно?
     
  9. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Это только дополняет описанное. Я же писал выше про шифрование.

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

    Все возможно. Но «прослушивание» трафика относится к вопросу про SSL. В адрес ключ лучше не включать, чтобы по крайней мере в ссылках он не засвечивался. Или в кэше браузера, хотя куки тоже кэшируются, причем часто даже сверх нормы.