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

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

Баллы

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

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

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

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

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

https://dnschecker.org/credit-card-generator.php)

  • status - статус активен/неактивен (любой тип данных по выбору, гланое чтобы было два различимых значения).

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

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

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

На главной странице приложения может быть что угодно, главное чтобы там была ссылка на "/users".

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

Критерии

Чтобы засчитать задание, вы должны прислать код своего мини-приложения на мою почту: asterite@seclab.cs.msu.su. К коду должен прилагаться README, где есть список всех зависимостей (всего что ваш код использует) и есть инструкция по установке/запуску. Кроме того, обязательно должен присутствовать файл "init-db.sql". Я должен смочь запустить ваше приложение и оно должно правильно работать (отдавать список пользователей из базы), иначе задание не будет засчитано. Задание засчитывается только ДО семинара 10 октября. Точнее, крайний срок - 20.00 9 октября. Поскольку с первого раза что нибудь обязательно не заработает, лучше пришлите заранее, я напишу если возникнут проблемы чтобы можно было исправить.

Update:

  • Почта на которую надо прислать: asterite@seclab.cs.msu.su
  • В теме напишите "Задание по SQL по курсу Безопасность компьютерных систем"
  • В тексте письма не забудьте указать ФИО
  • Поскольку письма частенько не доходят/теряются, если я вам так ничего и не ответил, значит письмо могло не дойти.