В ходе разработки приложения для курсовой работы, по причине существования обязательного пункта, создания клиент-серверной архитектуры, возникла необходимость реализовать проверку доступа через пару ключ-логин.
Данная панель управления была выполнена автором не для собственного использовани, а в качестве помощи одногруппнику, откуда в работе прослеживаются иные имена и фамилии.
Любой исходный код является оригинальным, за шрифтов и части стилей некоторых элементов.
- Создание интерфейса для управления записями в хранилище ключей
- Создание сервера для проверки правильности пары: ключ-контрольная информация.
- Разработка веб-приложения для управления и отображения записей в базе данных.
- Разработка безопасной системы обработки запросов к базе данных на проверку правильности введённых данных пользователем десктоп-приложения.
- Модуль работы с БД тык
- Модуль работы с куки тык
- Модуль работы с авторизацией тык
- Обработчики для авторизации, работы с бд, и проверкой сессии в куки(постфикс handler/handle).
- Разработка веб-страниц для главной страницы скачки приложения /user/index.html
- Подбор стилей, шрифтов для главной страницы.
- Разработка интерфейса администратора.
В одной части кода присутствует возможность выполнения SQL-инъекции.
Этот пункт является логической ошибкой при разработке приложения.
Единственный случай, при котором возможна инъекция, это при первичном вводе свобдной пары ключ-логин, где вместо логина может быть вставлена инъекция.
Ошибка была допущена поскольку формирование архитектуры базы данных и представление об отображении ключей было несовершеннным на момент планирования проекта.
Также на изучение соответствующих инструментов для защиты от инъекци необходимое некоторое количество времени.
В рамках курсовой работы, где данная часть(веб-панель управления) общего проекта(игра) является больше демонстрационной, нежели "боевой", исправление такого рода ошибок не является первостепенным в силу малого количества свободного времени.
Причина кратко
: Измнение части архитектуры приложения буквально в конце разработки.
- Переписать модуль, взаимодействующий с базой данных с использованием PDO.
- Использовать обратимое шифрование/кодирование данных при записи в базу данных. При извлечении - дешифровать перед выходом.
При заходе администратора внутрь панели создается сессия в базе данных, у которой есть срок ограничения действия, задающийся в коде.
После истечения данного срока действия сессия должна быть удалена.
На данный момент создан планировщик, который запускается при исполнении любого php-скрипта.
В планировщике находится список выполняемых задач, в том числе и отчистка базы данных.
Таким образом, до начала проверки входа пользователя, ключ, если время его действия истекло, будет удалён, и код отработает корректно.
Однако записи все еще остаются в базе данных до отсуствия взаимодействия с скриптом, где присутствует планировщик.
Причина кратко
: Недостаток знаний о возможных "правильных" решений проблемы своевременной отчистки. / Не знание верной структуры работы для данной задачи.
- Добавить задачи cron, что будут отчищать базу данных время от времени.
Все написанные модули для JS создавались с рассчётом исключительно на данное приложение без учёта расширения.
В конечном счёте описываемый пункт в целом не является проблемой в рамках данного проекта, так как выполняет необходимые функции.
Однако в коде присутствует достаточное количество монолитности, что отрицательно скажется при теоретическом расширении проекта.
Причина кратко
: Отсутствие перспектив развития данной работы.
- Полный рефакторинг всех модулей JavaScript