Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

Autentizace a autorizace

Úvod

  • Jaký je rozdíl mezi autentizací a autorizací?
  • Jakým způsobem je možné nabourat autentizaci a autorizaci aplikace?
  • Co je Cross-site scripting (XSS) a Cross-site request forgery (CSRF)?
  • Jak se dá těmto typům útoků zabránit?

Úkol 1

  • Vytvořte stránku s přihlašovacím formulářem (uživatelské jméno a heslo).
  • Zajistěte, aby heslo zadávané ve formuláři nebylo vidět na obrazovce.
  • Přístupové účty uživatelů budou uloženy v databázové tabulce.
  • Vytvořte tři stránky, na které bude možné přistoupit pouze po přihlášení. Propojte je odkazy s přihlašovacím formulářem (na způsob jednoduchého menu).

DROP TABLE IF EXISTS uzivatele;
 
 
CREATE TABLE uzivatele (
    uid INTEGER UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    uzivatelske_jmeno VARCHAR(20) UNIQUE NOT NULL,
    jmeno VARCHAR(100) NOT NULL,
    heslo VARCHAR(100) NOT NULL,
    pokusu INTEGER UNSIGNED NOT NULL
) TYPE = 'InnoDB';
 
 
 
INSERT INTO `uzivatele` (`uzivatelske_jmeno`, `jmeno`, `heslo`, `pokusu`) VALUES
    ('a', 'Pokusny uzivatel 1', 'a', 0),
    ('b', 'Pokusny uzivatel 2', 'b', 0);
 
 
SELECT heslo, pokusu FROM `uzivatele` WHERE uzivatelske_jmeno='$uziv_jmeno';
 
 
UPDATE `uzivatele` SET pokusu=$pokusu WHERE uzivatelske_jmeno='$uziv_jmeno';

Úkol 2

  • Heslo uživatele ukládejte v databázi zašifrované.
  • Ošetřete skripty náležitým způsobem proti SQL injects.
  • Jakým způsobem by šlo zajistit, aby se heslo odesílalo na server rovnou zašifrované z prohlížeče klienta?

Úkol 3

  • Účet uživatele blokujte po třech neúspěšných pokusech o přihlášení.
  • Přidejte administrátorskou stránku pro odblokování konkrétního uživatelského účtu.

Úkol 4

  • Upravte aplikaci tak, aby automaticky odhlašovala uživatele, který není po určitou dobu (např. 30s) aktivní.

Úkol 5

  • Upravte vytvořenou aplikaci tak, aby zabraňovala možným CSRF útokům.

Úkol 6 (domácí úkol)

  • Upravte aplikaci tak, aby přístupový účet kromě uživatelského jména a hesla obsahoval i informace o stránkách a konkrétních objektech na stránce, ke kterým má uživatel právo přistoupit.
  • Pokud bude uživatel přihlášený ale nebude mít práva na konkrétní stránku, vypíše se odpovídající chybová hláška.
  • Pokud uživatel nebude mít práva na konkrétní objekt na dané stránce, objekt se nezobrazí. Jako objekt berte obecný validní fragment HTML, který je vložený v elementu div.

Materiály

Řešení

courses/b6b39zwa/tutorials/12/start.txt · Last modified: 2019/09/16 11:34 by zaraondr