Безопасность компьютерных систем 2018/Задание 2 0

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск

Баллы

За задание дается 0.5 балла (сверх тех 2 баллов, которые будут даваться за основные задания).

Формулировка

Вам нужно написать маленькое веб-приложение, в котором для хранения данных будет использоваться SQL-база данных.

В базе данных должно быть две таблицы, хранящие данные о пользователях приложения. Первая таблица должна называться "users" и иметь следующие колонки:

  • id пользовтеля (число) - должно быть уникальным для каждого пользователя
  • login - имя пользователя (строка)
  • money_amount (число)
  • card_number - (строка) номер его кредитной карты (кстати, правдоподобные номера карт можно брать на http://www.getcreditcardnumbers.com/)
  • status - статус активен/неактивен (любой тип данных по выбору, главное, чтобы было два различимых значения).

Вторая таблица должна хранить пароли пользователей, в ней должно быть две колонки: id пользователя и собственно пароль. Имя этой второй таблицы может быть произвольным.

Вместе с кодом приложения должен поставляться скрипт "init-db.sql", который инициализирует эти таблицы, т. е. создает их (CREATE TABLE) и заполняет данными (INSERT). Всего должно быть не меньше 5 пользователей, минимум 3 активных, соответственно, минимум 2 неактивных. У первого активного пользователя должно быть имя "admin". У каждого пользователя в таблице с паролями должен лежать пароль.

  • Веб-приложение должно по url "/users" отдавать страницу со списком АКТИВНЫХ пользователей, на каждой строке списка должен быть id, имя пользователя и почта. Оформить список можно как bullet list или таблицу или как хотите, главное, чтобы данные пользователей были на разных строках и чтобы смотреть было не больно. Данные для списка должны получаться SQL-запросом из базы (SELECT), а не быть вписанными в код вручную, то есть, если добавить в базу еще одного активного пользовалеля, он должен появиться при следующем заходе на страницу в списке. Определять активный пользователь или нет должен SQL-запрос по значению поля "status".
  • Должна быть выборка пользователей по login и id. Параметр, по которому должен отбираться пользователь, передается в параметре query string. То есть:
    • по url "/by-login?login=admin" должна выдаваться страница с данными пользователя c именем "admin". Ну и если не "admin" а другое имя, то инфа о пользователе с таким именем, а если такого пользователя не существует, то пусть что угодно происходит (хоть ошибка, хоть пустая страница)
    • по url "/by-id?id=3" должны выдаваться данные пользователя с id=3 и т.д. .

На главной странице приложения может быть что угодно, главное, чтобы там была ссылка на "/users", а также либо формы, где можно указать login и id (чтобы потом сделать соответствующий запрос), либо просто ссылки - примеры (например ссылки на url "/by-login?login=admin" и "/by-id?id=3").

База данных может быть любой. Язык программирования/фреймворк/веб-сервер тоже любой. Если совсем не знаете на каком языке писать, возьмите тот на котором написать будет легче/быстрее, например, PHP или Python.

Критерии

Чтобы засчитать задание, Вы должны прислать код своего мини-приложения (архивом или ссылкой на код) в телеграм @asterite3 или на мою почту: asterite@seclab.cs.msu.su. К коду должен прилагаться README, где есть список всех зависимостей (всего, что ваш код использует) и есть инструкция по установке/запуску. Кроме того, обязательно должен присутствовать файл "init-db.sql". Я должен смочь запустить ваше приложение, и оно должно правильно работать (отдавать список пользователей из базы), иначе задание не будет засчитано. Крайний срок приема задания - 22.30 1 октября. Поскольку с первого раза что-нибудь обязательно не заработает, лучше присылайте пораньше, я напишу если возникнут проблемы чтобы можно было исправить. Автором присланного кода должны быть вы сами, запрещается присылать приложение, сделанное кем-то еще. В своем сообщении или теме письма не забудьте указать по какому поводу пишете (например "Задание по SQL по курсу Безопасность компьютерных систем" и ФИО).

Те кто пришлёт работающее и отвечающее критериям приложение первыми, получат дополнительный бонус. Также отдельный бонус получит приложение, которое выгядит приятнее всего (но при этом отвечает требованиям)