29.05.2017, 22:02
|
Профессор
|
|
Регистрация: 08.03.2016
Сообщений: 429
|
|
Мой первый сайт на PHP
Оцените, мой небольшой сервис вопросов и ответов, всё делал сам, на чистом html, css, js и php.
Очень интересно узнать, удобно ли я сделал админку?
Для входа в админку, надо указать GET параметр ?admin=1 и ввести admin и admin
только не удаляйте разделы, которые вы не создавали.
http://phpkurs.16mb.com/?admin=1
сам сайт http://phpkurs.16mb.com/
весь код на гитхабе https://github.com/Div-Man/faq в коде получилось, очень много дублирования.
Описание клиентской части
- Пользователи могут просматривать категории, вопросы и ответы.
- Любой пользователь может задать вопрос, указав своё имя, адрес электронной почты, выбрав категорию и написав текст вопроса.
- Вопросы без ответов не публикуются на сайте.
Вход в интерфейс администратора
- Для попадания в интерфейс администратора нужно ввести логин и пароль.
- По умолчанию создан единственный администратор с логином admin и паролем admin.
Возможности в интерфейсе администратора
- Просматривать список администраторов.
- Создавать новых администраторов.
- Изменять пароли существующих администраторов.
- Удалять существующих администраторов.
- Просматривать список тем. По каждой теме в списке видно сколько всего вопросов в ней, сколько опубликовано, сколько без ответов.
- Создавать новые темы.
- Удалять существующие темы и все вопросы в них.
- Просматривать вопросы в каждой теме. По каждому вопросу видно дату создания, статус (ожидает ответа / опубликован / скрыт).
- Удалять любой вопрос из темы.
- Скрывать опубликованные вопросы.
- Публиковать скрытые вопросы.
- Редактировать автора, текст вопроса и текст ответа.
- Перемещать вопрос из одной темы в другую.
- Добавлять ответ на вопрос с публикацией на сайте, либо со скрытием вопроса.
- Видеть список всех вопросов без ответа во всех темах в порядке их добавления. И иметь возможность их редактировать и удалять.
Последний раз редактировалось DivMan, 29.05.2017 в 22:12.
|
|
31.05.2017, 03:06
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
100% дырявый код.
|
|
02.06.2017, 11:14
|
Профессор
|
|
Регистрация: 08.03.2016
Сообщений: 429
|
|
А можно поподробней?
|
|
02.06.2017, 11:44
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Нет, подробный аудит ваших скриптов, это много. Напрягите Гугл, есть инструменты для проверки уязвимости сайта. Но они не дадут полной картины, но есть масса статей в сети по данному вопросу.
Сразу что бросается в глаза, так это отсутствие фильтрации данных. Для справки - strip_tags, это не фильтрация, а htmlspecialchars к данным параметров запроса, это глупость, htmlspecialchars полезна для предотвращения XSS. И этот бедлам бесполезный не смотря на то, что используется PDO, но без использования его возможностей пресечения инъекций.
Нефильтрованные данные и в подстановках используются header('Location: ?interface-admin=1&showQuestion='. $_GET['showQuestion']);
|
|
03.06.2017, 02:49
|
Профессор
|
|
Регистрация: 04.03.2015
Сообщений: 163
|
|
Laimas наверное имел ввиду, что надо к strip_tags, еще добавить addslashes
Однажды читал про иньекции, но так и не понял как они возможны, например я пишу в базу через mysqli_query, там нельзя сделать два запроса одной строкой, ну по крайней мере я такого не знаю, laimas если знаешь напиши как такое возможно
Что значит фильтровать данные, если кто-то захочет передать в $_GET['showQuestion'] что-то чего там быть не должно и будет переход, что с того?
P.S. Код не читал, сорри.
Последний раз редактировалось psiklop, 03.06.2017 в 02:54.
|
|
03.06.2017, 03:43
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от psiklop
|
Laimas наверное имел ввиду, что надо к strip_tags, еще добавить addslashes
|
Зачем?
Сообщение от psiklop
|
Однажды читал про иньекции, но так и не понял как они возможны, например я пишу в базу через mysqli_query, там нельзя сделать два запроса одной строкой
|
http://php.net/manual/ru/security.da...-injection.php
Сообщение от psiklop
|
если кто-то захочет передать в $_GET['showQuestion'] что-то чего там быть не должно и будет переход, что с того?
|
На здоровье, страшна не вставка как есть, а неконтролируемость со стороны разработчика последствий таких действий.
Этот раздел нужно знать.
|
|
03.06.2017, 15:52
|
Профессор
|
|
Регистрация: 04.03.2015
Сообщений: 163
|
|
Сообщение от laimas
|
Зачем?
|
addslashes используют для строковых параметров для предотвращение sql-иньекций
Сообщение от laimas
|
http://php.net/manual/ru/security.da...-injection.php
|
вот я и спросил, я пишу в базу через mysqli_query, там нельзя совмещать запросы select с insert, select с select и так далее, я пробовал и не получалось
|
|
03.06.2017, 16:00
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от psiklop
|
addslashes используют для строковых параметров для предотвращение sql-иньекций
|
Для этого используют соответствующие функции для каждого из расширений MySQL. А в случае mysqli и PDO можно использовать подготовленные запросы.
Сообщение от psiklop
|
там нельзя совмещать запросы select с insert, select с select
|
https://dev.mysql.com/doc/refman/5.7...rt-select.html
А что mysql, mysqli разницы нет.
|
|
05.06.2017, 06:30
|
Профессор
|
|
Регистрация: 08.03.2016
Сообщений: 429
|
|
Я забиндел всё
|
|
05.06.2017, 11:46
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Ну если считаете, что теперь все Ок (так ли это...), думайте над диалогом, которого у вас нет.
|
|
|
|