PHP a bezpečnost. nejen veřejná

Podobné dokumenty
Šifrování Autentizace Bezpečnostní slabiny. Bezpečnost. Lenka Kosková Třísková, NTI TUL. 22. března 2013

1 Webový server, instalace PHP a MySQL 13

1. Webový server, instalace PHP a MySQL 13

Vývoj Internetových Aplikací

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

INFORMAČNÍ SYSTÉMY NA WEBU

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

Specifikace požadavků. POHODA Web Interface. Verze 1.0. Datum: Autor: Ondřej Šrámek

Uživatelská dokumentace

Testování webových aplikací Seznam.cz

Principy fungování WWW serverů a browserů. Internetové publikování

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Část IV - Bezpečnost 21. Kapitola 19 Bezpečnostní model ASP.NET 23

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Úvodem 9. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10. Než začneme 11

Dokumentace. k projektu Czech POINT. Popis použití komerčního a kvalifikovaného certifikátu

Není cloud jako cloud, rozhodujte se podle bezpečnosti

Instalace a konfigurace web serveru. WA1 Martin Klíma

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

BI-VWS. Vybrané partie z administrace Webového Serveru Autetizace, autorizace a kontrola přístupu Apache httpd

1. Způsoby zabezpečení internetových bankovních systémů

Vstupní požadavky, doporučení a metodické pokyny

Technická specifikace

DUM č. 11 v sadě. 36. Inf-12 Počítačové sítě

Nastavení zabezpečení

17. července :51 z moravec@yahoo.com

HTTP protokol. Zpracoval : Petr Novotný

Artlingua Translation API

Autentizace webových aplikací z pohledu NEbezpečnosti. Oldřich Válka Security

Cross- Site Request Forgery

Datové schránky ante portas

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U

Ochrana mobilních uživatelů před hrozbami Internetu mimo firemní prostředí. Simac Technik ČR, a.s.

Jednorázová hesla pro zvýšení bezpečnosti vzdáleného přístupu mobilních uživatelů

Práce s ovými schránkami v síti Selfnet

LSD v informatice. Michal Gruber, Ondřej Linger, Amin Shakery, Denis Sianov. SPŠE Ječná Ječná 30, Praha 2

Dokumentace k API SSLmarketu. verze 1.3

Platební systém XPAY [

Informatika / bezpečnost

language="javascript">... </script>.

Služba Rychlý výpis umožňuje on-line službám získat elektronický a snadno zpracovatelný výpis z bankovního účtu klienta.

SOFTWARE 5P. Instalace. SOFTWARE 5P pro advokátní praxi Oldřich Florian

Webové rozhraní pro datové úložiště. Obhajoba bakalářské práce Radek Šipka, jaro 2009

Koláčky, sezení. Martin Klíma

Nápověda pro systém ehelpdesk.eu

Jak efektivně ochránit Informix?

Protokol HTTP 4IZ228 tvorba webových stránek a aplikací

Hitparáda webhackingu nestárnoucí hity. Roman Kümmel

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Microsoft Windows Server System

Relační vrstva SMB-Síťový komunikační protokol aplikační vrstvy, který slouží ke sdílenému přístupu k souborům, tiskárnám, sériovým portům.

SRSW4IT Inventarizační SW. Prezentace aplikace. Vedoucí DP: ing. Lukáš Macura Autor: Bc. Petr Mrůzek

Elektronická podpora výuky předmětu Komprese dat

STŘEDNÍ ŠKOLA INFORMAČNÍCH TECHNOLOGIÍ A SOCIÁLNÍ PÉČE

Registr práv a povinností

OCHRANA SOUKROMÍ CRON SYSTEMS, S.R.O. PRO WEBOVOU STRÁNKU 1. Obecné informace.

POKYNY K REGISTRACI PROFILU ZADAVATELE

Pokročilé funkce a časté chyby. Petr Ferschmann FlexiBee Systems s.r.o.

WWW technologie. HTTP protokol

Příručka pro dodavatele. Systém EZVR 1.1 Verze dokumentu 1.3 Datum vydání:

Referenční rozhraní. Jiří Kosek. Ministerstvo informatiky ČR. ISSS 25. března 2003

mbank.cz mtransfer Okamžitá notifikace o mtransferu Dokumentace pro externího partnera

Příloha č. 1 Verze IS esyco business

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320

FIO API PLUS. Verze 1.1.1

Návrh a implementace bezpečnosti v podnikových aplikacích. Pavel Horal

GDPR A INFORMAČNÍ SYSTÉM. Nadežda Andrejčíková Libor Piškula

Výměna pokladních certifikátů pro evidenci tržeb

Sada 1 - PHP. 09. Formuláře

Útoky na HTTPS. PV210 - Bezpečnostní analýza síťového provozu. Pavel Čeleda, Radek Krejčí

SSL Secure Sockets Layer

Bezpečnost webových aplikací

ERP-001, verze 2_10, platnost od

Roční periodická zpráva projektu

Informační systém pro e-learning manuál

Referenční rozhraní národního konektoru Národního kontaktního místa pro ehealth úloha pacientský souhrn

[Zadejte název společnosti.] Instalace. SOFTWARE 5P pro správu bytového fondu Oldřich Florian

UŽIVATELSKÁ BEZPEČNOST INFORMAČNÍCH SYSTÉMŮ

nástroj pro jednoduchou správu a vedení agendy studentských počítačových sítí na kolejích SU OPF Karviná Ing.

Bezpečnost internetového bankovnictví, bankomaty

Bezpečnost B2B přes ISDS Aktuální výzvy a jejich řešení

Instalační manuál aplikace

Příručka nastavení funkcí snímání

Registr práv a povinností

WORKSHOP II. Téma: Stávající informační systém Vytvořeno: Odborem 34 Státní dozor nad sázkovými hrami a loteriemi Praha 1.

Návod na používání webmailu

Tato zpráva informuje o implementaci LMS (Learning Management Systém) Moodle konkrétně Moodle

Instalace a první spuštění Programu Job Abacus Pro

Content Security Policy

Analýza síťového provozu. Ing. Dominik Breitenbacher Mgr. Radim Janča

Zabezpečení proti SQL injection

POKYNY PRO DODAVATELE

Dokumentaci k semestrální úloze z předmětu Internet a WWW (X36WWW)

přes webový prohlížeč pomocí Ing. Tomáš Petránek

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

On-line dražební systém EDEN návod k použití

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

Uživatel počítačové sítě

Transkript:

PHP a bezpečnost nejen veřejná

Navrhujeme bezpečné aplikace Efektivně spustitelných skriptů by mělo být co nejméně. V ideálním případě jen jeden "bootstrap" skript (index.php). Případně jeden bootstrap skript pro každou aplikaci (službu, ). Knihovní (includované) skripty Neobsahují žádný efektivně spustitelný kód. Jen deklarace tříd, funkcí, Nastavení serveru by nemělo umožnit přímý přístup ke knihovnám. Pokud je to možné zařídit (např. vhodnou modifikací.htaccess). Vkládání je bezpečnější s include_once() a require_once(). Nejlépe pouze na začátku skriptu. Existují i dobré výjimky např. šablony. verze 1.1 2008-2009, Martin Kruliš 2

Přenos dat mezi klientem a serverem HTTP pracuje přímo nad TCP Komunikace není šifrovaná. Kdokoli může vidět zasílaná a přijímaná data. HTTPS šifrované HTTP Spojení nad TCP je transparentně šifrováno OpenSSL. Webový server může i nemusí HTTPS podporovat. Otázka korektního nastavení, vlastního SSL certifikátu, PHP nemůže ovlivnit, zda se klient připojí přes HTTP, nebo HTTPS. Ale můžeme zjistit, zda byl požadavek šifrovaný. $_SERVER['HTTPS'] = 'on'; I přes šifrované spojení by se měla citlivá data (např. uživatelské heslo) přenášet co nejméně. Zejména není vhodné ukládat citlivá data do cookies. verze 1.1 2008-2009, Martin Kruliš 3

Hodnoty z formulářů Rozlišujme GET a POST parametry Není vhodné používat pole $_REQUEST, ani starší metody získávání zaslaných parametrů. Integrita parametrů Je třeba ověřovat integritu všech parametrů, které skript dostal. Uživatel (útočník) zvládne jednoduše modifikovat URL nebo upravit formulář v HTML. Opakované odesílání formulářových dat Většinou není žádoucí, aby mohl uživatel odeslat data vícekrát. Řešením je HTTP redirect, případně další techniky (počítadla, nastavení expirace, ). verze 1.1 2008-2009, Martin Kruliš 4

Databáze Zabezpečení databáze Databáze by měla být ve vaší "trusted base". Tedy tam, kde k ní máte přístup jen vy. Na serveru, který je zabezpečen (tj. i fyzicky). Samostatný uživatelský účet pro připojení z PHP. Princip minimálních práv Časté zálohy jsou nutností. Nejlépe na jiný server, v jiné budově (na jiném kontinentu ) Citlivé údaje v databázi Citlivé údaje by měly být šifrovány, nebo jinak znepřístupněny. Hesla se často hašují: <salt>,sha1(<salt>,<heslo>) "Salt" je sekvence náhodných znaků. verze 1.1 2008-2009, Martin Kruliš 5

Databáze http://xkcd.com/327/ Vstupní data do SQL dotazů Při vkládání formulářových dat přímo do SQL hrozí nebezpečí SQL-injection útoku. Vstupní data je třeba ošetřit (např. v MySQL existuje funkce mysql_real_escape_string()). verze 1.1 2008-2009, Martin Kruliš 6

Další injection útoky HTML (JavaScript) injection Uživatelem zadaná (a neošetřená) data se vkládají přímo do HTML. Útočník může vložit vlastní kód (např. <script> ). Pomocí JavaScriptu je jednoduché číst např. cookies na straně klienta a přes HTTP je poslat na jiný server. Stačí data ošetřit při vkládání (např. htmlspecialchars()). Další (méně obvyklé) varianty PHP injection Uživatelem zadaná data se použijí v PHP funkci eval(). Existují i méně očividné varianty např. použití nebezpečných dat v kombinaci s include(), require() nebo fopen(). Command-line injection Uživatelem zadaná data se použijí v příkazu system(), exec(), shell_exec() apod. verze 1.1 2008-2009, Martin Kruliš 7

Autentizace Autentizace je proces ověření totožnosti uživatele. U webových aplikací se nejčastěji používá kombinace jméno-heslo. Největším problémem je udržování informace o přihlášení. Uživatel by neměl neustále znovu zadávat přihlašovací údaje. Informace o přihlášení by měly být uloženy bezpečně. Musí být uloženy na straně klienta i na straně serveru. Možnosti uložení informací Na straně klienta Předáváním parametrů v HTML Cookies Na straně serveru Sessions Databáze, soubory, případně jiné persistentní úložiště verze 1.1 2008-2009, Martin Kruliš 8

Autentizace odcizení identity Problém bezstavovosti HTTP Každý požadavek je zpracováván zvlášť na základě informací od klienta. Pokud útočník duplikuje parametry, které uživatel přechovává na klientu, může odcizit jeho identitu a přihlásit se místo něj. Možná řešení Stoprocentně spolehlivé řešení neexistuje. Útočníkovy šance můžeme minimalizovat: Více ověřovacích informací na straně klienta a jejich obměňování Vypršení přihlášení při neaktivitě Ověřování specifických vlastností klienta (typ prohlížeče, IP adresa, ) U kritických operací vyžadovat heslo znovu (např. při změně hesla) Nejspolehlivější je ověřování podpisového certifikátu na klientovi. Pokud nedojde k jeho odcizení, nebo prolomení šifrování. verze 1.1 2008-2009, Martin Kruliš 9

HTTP Autentizace Protokol HTTP podporuje vestavěnou autentizaci Je-li uživatel autentizován, informace o něm jsou uloženy v: $_SERVER['PHP_AUTH_USER'] $_SERVER['PHP_AUTH_PW'] Pokud přihlašovací údaje nejsou k dispozici (nebo jsou neplatné), skript požádá v hlavičkách o autentizaci: header('www-authenticate: Basic realm="auth test"'); header('http/1.0 401 Unauthorized'); exit; Problémy: Klient i server musí HTTP autentizaci podporovat. Přihlašovací informace se posílají opakovaně (při každé akci). Není rozumně definované odhlašování. verze 1.1 2008-2009, Martin Kruliš 10

Autorizace Autorizace je proces ověřování uživatelských práv. V běžném IS se většinou vyskytují uživatelé s různými právy. Bezpečnostní model Definuje, co smí kteří uživatelé s jakými objekty provádět. Součástí def. je seznam chráněných objektů a možné operace s nimi. Jednoúrovňový bezpečnostní model vrací pouze ano/ne. Existují i složitější modely. Součástí definice modelu je seznam chráněných objektů a možné operace s nimi. Implementace Kód by měl být implementován na jednom místě (např. v jedné třídě nebo funkci). Práva je potřeba ověřovat při zobrazení dat i při jejich modifikaci. verze 1.1 2008-2009, Martin Kruliš 11

Bezpečnostní modely Adresář (Directory, Capability list) Každý uživatel má seznam objektů, ke kterým smí přistupovat. U každého objektu má seznam operací, které s ním smí provádět. Access Control List (ACL) U každého objektu je uložen seznam uživatelů, kteří s ním smí manipulovat (a povolené operace nad objektem). Access Control Matrix Matice uživatelé x objekty. Každé pole obsahuje seznam oprávnění uživatele pro daný objekt. Bell-Lapadula Každý uživatel má úroveň oprávnění, každý objekt (případně operace na objektu) má min. požadovanou úroveň oprávnění. Uživatel musí mít vyšší nebo stejná oprávnění. verze 1.1 2008-2009, Martin Kruliš 12

Autorizace další drobnosti Princip minimálních práv Co není povoleno, je zakázáno. Seskupování uživatelů Vytváření skupin uživatelů (ad unixové systémy). Práva se přidávají uživatelům i skupinám. Role Práva se nepřiřazují uživatelům, ale rolím. Uživatel odkazuje na jednu, nebo více rolí, které zastává. Jeho práva jsou maximální práva ze všech rolí. Capabilities Dočasná oprávnění jako např. lístek do kina. Lze je přidělit na základě složitějších ověření. verze 1.1 2008-2009, Martin Kruliš 13

Kde číhá nebezpečí Kdo (co) představuje největší hrozbu pro váš systém? Piráti? Hackeři? Zloději? verze 1.1 2008-2009, Martin Kruliš 14

Kde číhá nebezpečí Kdo (co) představuje největší hrozbu pro váš systém: Běžní uživatelé Selhání nosné infrastruktury (síť, disky, ) Výpadek elektřiny verze 1.1 2008-2009, Martin Kruliš 15

Pár rad na závěr Uklízejte po sobě Nenechávejte zbytečné informace v HTML, URL, cookies Nenechávejte otevřené sessions Omezte přístup k souborům, které nemá nikdo vidět Udržujte software aktuální Velké množství průniků je způsobeno chybami v PHP, web. serveru a jiném souvisejícím software. Zálohujte a zaznamenávejte logy operací Většina ztrát dat je zaviněna selháním nosné infrastruktury. Vlastní uživatelé jsou větší hrozbou než útočníci zvenku. Dávejte uživatelům minimální práva a dbejte na osvětu. verze 1.1 2008-2009, Martin Kruliš 16