Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.05.2017, 22:02
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 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.
Ответить с цитированием
  #2 (permalink)  
Старый 31.05.2017, 03:06
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

100% дырявый код.
Ответить с цитированием
  #3 (permalink)  
Старый 02.06.2017, 11:14
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

А можно поподробней?
Ответить с цитированием
  #4 (permalink)  
Старый 02.06.2017, 11:44
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Нет, подробный аудит ваших скриптов, это много. Напрягите Гугл, есть инструменты для проверки уязвимости сайта. Но они не дадут полной картины, но есть масса статей в сети по данному вопросу.

Сразу что бросается в глаза, так это отсутствие фильтрации данных. Для справки - strip_tags, это не фильтрация, а htmlspecialchars к данным параметров запроса, это глупость, htmlspecialchars полезна для предотвращения XSS. И этот бедлам бесполезный не смотря на то, что используется PDO, но без использования его возможностей пресечения инъекций.

Нефильтрованные данные и в подстановках используются header('Location: ?interface-admin=1&showQuestion='. $_GET['showQuestion']);
Ответить с цитированием
  #5 (permalink)  
Старый 03.06.2017, 02:49
Профессор
Отправить личное сообщение для psiklop Посмотреть профиль Найти все сообщения от psiklop
 
Регистрация: 04.03.2015
Сообщений: 163

Laimas наверное имел ввиду, что надо к strip_tags, еще добавить addslashes
Однажды читал про иньекции, но так и не понял как они возможны, например я пишу в базу через mysqli_query, там нельзя сделать два запроса одной строкой, ну по крайней мере я такого не знаю, laimas если знаешь напиши как такое возможно

Что значит фильтровать данные, если кто-то захочет передать в $_GET['showQuestion'] что-то чего там быть не должно и будет переход, что с того?
P.S. Код не читал, сорри.

Последний раз редактировалось psiklop, 03.06.2017 в 02:54.
Ответить с цитированием
  #6 (permalink)  
Старый 03.06.2017, 03:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от psiklop
Laimas наверное имел ввиду, что надо к strip_tags, еще добавить addslashes
Зачем?

Сообщение от psiklop
Однажды читал про иньекции, но так и не понял как они возможны, например я пишу в базу через mysqli_query, там нельзя сделать два запроса одной строкой
http://php.net/manual/ru/security.da...-injection.php

Сообщение от psiklop
если кто-то захочет передать в $_GET['showQuestion'] что-то чего там быть не должно и будет переход, что с того?
На здоровье, страшна не вставка как есть, а неконтролируемость со стороны разработчика последствий таких действий.

Этот раздел нужно знать.
Ответить с цитированием
  #7 (permalink)  
Старый 03.06.2017, 15:52
Профессор
Отправить личное сообщение для psiklop Посмотреть профиль Найти все сообщения от psiklop
 
Регистрация: 04.03.2015
Сообщений: 163

Сообщение от laimas
Зачем?
addslashes используют для строковых параметров для предотвращение sql-иньекций

Сообщение от laimas
http://php.net/manual/ru/security.da...-injection.php
вот я и спросил, я пишу в базу через mysqli_query, там нельзя совмещать запросы select с insert, select с select и так далее, я пробовал и не получалось
Ответить с цитированием
  #8 (permalink)  
Старый 03.06.2017, 16:00
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от psiklop
addslashes используют для строковых параметров для предотвращение sql-иньекций
Для этого используют соответствующие функции для каждого из расширений MySQL. А в случае mysqli и PDO можно использовать подготовленные запросы.

Сообщение от psiklop
там нельзя совмещать запросы select с insert, select с select
https://dev.mysql.com/doc/refman/5.7...rt-select.html

А что mysql, mysqli разницы нет.
Ответить с цитированием
  #9 (permalink)  
Старый 05.06.2017, 06:30
Профессор
Отправить личное сообщение для DivMan Посмотреть профиль Найти все сообщения от DivMan
 
Регистрация: 08.03.2016
Сообщений: 429

Я забиндел всё
Ответить с цитированием
  #10 (permalink)  
Старый 05.06.2017, 11:46
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Ну если считаете, что теперь все Ок (так ли это...), думайте над диалогом, которого у вас нет.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу php программиста для написания небольшого блока на сайт flyte Работа 1 16.09.2016 18:02
Как определить url сайта с которого просматривают мой сайт в ифрейме??? cmail Общие вопросы Javascript 4 03.06.2013 11:53
Мой сайт и мои программы Владимир Фомин Ваши сайты и скрипты 19 08.03.2013 16:59
Создал первый сайт на php igorta Ваши сайты и скрипты 29 23.09.2009 22:04
javascript и php (Вопрос) Гауляйтер Общие вопросы Javascript 3 06.05.2009 09:23