24.5.2008 Jaku b Su ch ý 1

Podobné dokumenty
Drupal. Svobodný redakční systém. duben 2007 Jakub Suchý 1

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

Vytvoření pokročilé Fotogalerie v Drupalu - Views

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);

Formuláře. Internetové publikování. Formuláře - příklad

1 Webový server, instalace PHP a MySQL 13

Návrh a tvorba WWW stránek 1/14. PHP a databáze

HLEDEJCENY.mobi. Obsah. Mobilní verze e-shopu. Důvody instalace

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

D R U P A L C M S

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

1. Webový server, instalace PHP a MySQL 13

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

Základy HTML, URL, HTTP, druhy skriptování, formuláře

České vysoké učení technické v Praze Fakulta elektrotechnická. Semestrální projekt Y38PRO. Návod na vytvoření modulu pro CMS Drupal verze 6.

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

Vývoj Internetových Aplikací

Instalace a konfigurace web serveru. WA1 Martin Klíma

Jan Forman Manuál CLASSIFICATIO N: public / veřejný dokument IDE NTIFICATIO N N U MBER: AUTH OR:


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

Redakční systém Joomla. Prokop Zelený

Obsah. 1.1 Práce se záznamy Stránka Dnes Kontakt se zákazníkem... 5

Formuláře. Internetové publikování

1 Administrace systému Moduly Skupiny atributů Atributy Hodnoty atributů... 4

DUM 14 téma: Interakce s uživatelem

Inovace a zkvalitnění výuky prostřednictvím ICT Tvorba webových stránek. Ing. Zelinka Pavel Číslo: VY_32_INOVACE_35 17 Anotace:

Modul IRZ návod k použití

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

Stručný úvod pro programátory. Michal Kuchta

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

Návrh a tvorba WWW stránek 1/8. Formuláře

M4 PDF rozšíření. Modul pro PrestaShop.

Mediareference Vojtěch

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

Bottle -- příklad. Databáze. Testovací data. id Jedinečný identifikátor řádku: Bude typu INT s AUTO_INCREMENT a nastavíme ho jako primární klíč

INFORMAČNÍ SYSTÉMY NA WEBU

Po stisku Next se nám objeví seznam dostupných tříd (naše zkompilovaná třída User.KBI), viz následující obrázek.

Oracle XML DB. Tomáš Nykodým

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

Obsah. Úvodem 9. Kapitola 1 Než začneme 11. Kapitola 2 Dynamické zobrazování obsahu 25. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10

NSWI096 - INTERNET JavaScript

Webové Aplikace (6. přednáška)

Databáze MS-Access. Obsah. Co je to databáze? Doc. Ing. Radim Farana, CSc. Ing. Jolana Škutová

PHP a Large Objecty v PostgreSQL

Formuláře. Aby nám mohli uživatelé něco hezného napsat třeba co si o nás myslí!

Jak importovat šablony tiskových sestav do aplikace MarkTime PORTAL. Administrační manuál Bellman Group, s.r.o. 2007/09/23 verze 1.

Formy komunikace s knihovnami

Nové jazykové brány do Caché. Daniel Kutáč

Střední odborná škola a Střední odborné učiliště, Hořovice

Webová stránka. Matěj Klenka

E-NABÍDKA PARTNER.REDA.CZ

ZEMĚMĚŘICKÝ ÚŘAD. Uživatelská příručka - Metadatový editor MDE. Pod Sídlištěm 9/1800, Praha 8. Verze IS nebo části IS: Účel poslední změny:

PHP tutoriál (základy PHP snadno a rychle)

8.2 Používání a tvorba databází

APS Web Panel. Rozšiřující webový modul pro APS Administrator. Webové rozhraní pro vybrané funkce programového balíku APS Administrator

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5

Manuál pro obsluhu Webových stránek

Úvod do databázových systémů

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Úvod do Web Services

Microsoft. Word. Hromadná korespondence. Mgr. Jan Veverka Střední odborná škola sociální Evangelická akademie

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

VISUAL BASIC. Práce se soubory

5. POČÍTAČOVÉ CVIČENÍ

AJAX. Dynamické změny obsahu stránek

Zranitelnosti webových aplikací. Vlastimil Pečínka, Seznam.cz Roman Kümmel, Soom.cz

D R U P A L V O J T Ě C H K U S W O J T H A

Internet cvičení. ZS 2009/10, Cvičení 3., Tomáš Pop. DISTRIBUTED SYSTEMS RESEARCH GROUP

Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

Střední odborná škola a Střední odborné učiliště, Hořovice

Střední odborná škola a Střední odborné učiliště, Hořovice

Informační systém webhostingu

Demoprojekt Damocles 2404

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

Prohlížení a editace externích předmětů

Vytváření a použití knihoven tříd

Obsah. Rozdíly mezi systémy Joomla 1.0 a Systém Joomla coby jednička online komunity...16 Shrnutí...16

Šablonovací systém htmltmpl vypracoval: Michal Vajbar, Šablonovací systém htmltmpl

Dokumentace k API SSLmarketu. verze 1.3

Programování v jazyku C# II. 5.kapitola

Příloha 6. Palety nástrojů

Průvodce aplikací GTS Webový portál pro správce

Internet cvičení. ZS 2009/10, Cvičení 4., PHP. Tomáš Pop. DISTRIBUTED SYSTEMS RESEARCH GROUP

Drupal konference sobota,

ACTIVATE HERE - FAQ. Zakoupením této položky získáte do 60 minut do požadovaného u aktivační klíče k vybranému produktu.

Jak na sekce webu v Drupalu

Pokročilé techniky tvorby sestav v Caché. ZENové Reporty

Postup. Úvodem. Hlavní myšlenka frameworku. application. system. assets. uploads

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

EPLAN Electric P8 2.7 s databázemi na SQL serveru

Databázové aplikace pro internetové prostředí PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

Použití databází na Webu

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

Základy PHP. Úvod do jazyka PHP a principů skriptování na straně serveru

Transkript:

Drupal API 24.5.2008 Jaku b Su ch ý 1

Témata Práce s databází Bezpečnost práce s Drupalem Forms API Jak udělat vlastní modul Hooks Lokalizace 24.5.2008 Jaku b Su ch ý 2

Práce s databází Drupal poskytuje funkce pro práci s databází Výhoda: Nezávislé na typu databáze Při správném použití se stará o bezpečnost Tyto funkce zapouzdřují standardní funkce v PHP 24.5.2008 Jaku b Su ch ý 3

Hlavní funkce Provede SQL dotaz a vrátí výsledek do proměnné $result: $result = db_query('dotaz'); Vrátí jednu řádku z výsledku jako objekt $row = db_fetch_object($result); Vrátí jednu řádku z výsledku jako pole $row = db_fetch_array($result) 24.5.2008 Jaku b Su ch ý 4

Příklad $result = db_query("select n.title FROM {node} n"); while ($row = db_fetch_object($result)) { print 'Clanek: '.check_plain($row >title); } 24.5.2008 Jaku b Su ch ý 5

Bezpečnost Bezpečnost webových stránek je důležitá Tisíce napadených webových stránek denně to dokazuje Nejčastější problémy: SQL Injection Cross Site Scripting Cross Site Request Forgery 24.5.2008 Jaku b Su ch ý 6

SQL Injection Vložení škodlivého kódu přímo do SQL dotazu Škodlivý kód se poté přímo provede Příklad: $nid = 5; db_query("delete FROM {node} n WHERE n.nid = '$nid'") // vysledek DELETE FROM node WHERE node.nid = '5' 24.5.2008 Jaku b Su ch ý 7

SQL Injection Vložení škodlivého kódu přímo do SQL dotazu Škodlivý kód se poté přímo provede Příklad: $nid = "1' OR 1=1 "; db_query("delete FROM {node} n WHERE n.nid = '$nid'") // vysledek DELETE FROM node WHERE node.nid = '1' OR 1=1 ' 24.5.2008 Jaku b Su ch ý 8

Při správném použití Drupal API SQL Injection nehrozí 24.5.2008 Jaku b Su ch ý 9

Jak se bránit? db_query("delete FROM node WHERE nid = '%d'", $nid); * Uvedený příklad neodpovídá Drupal standardům. Víte z jakého důvodu? (Pravý důvod je, že jsem potřeboval dotaz, co se vejde na řádku.) 24.5.2008 Jaku b Su ch ý 10

Jak se bránit? db_query(" INSERT INTO {table} VALUES ('%d', '%s', '%f', %b)", $cislo, $retezec, $float, $binary); Všimněte si pořadí tokenů, jejich uvozovek a tomu, čemu odpovídají 24.5.2008 Jaku b Su ch ý 11

Jak se bránit? db_query(" INSERT INTO {table} VALUES ('%d', '%s', '%f', %b)", $cislo, $retezec, $float, $binary); Všimněte si pořadí tokenů, jejich uvozovek a tomu, čemu odpovídají 24.5.2008 Jaku b Su ch ý 12

Cross Site Scripting Vložení škodlivého kódu do vstupu pro uživatele Také nazýváno XSS Příklad: <input type="text" name="jmeno" /> <?php print "Vase jmeno je: ".$_GET['jmeno'];?> Výsledek $jmeno="jenda"; Vase jmeno je: Jenda $jmeno="<b>jenda</b>"; Vase jmeno je: Jenda bold! 24.5.2008 Jaku b Su ch ý 13

Cross Site Scripting Co když do HTML kódu vložím např. javascript? Ten má přístup k mnoha informacím, např. cookies uživatele. Možné důsledky: Ukradení přihlášení a tím celého webu Přesměrování uživatele na jiný web (konkurence!) Otravování ostatních uživatelů A mnoho dalších 24.5.2008 Jaku b Su ch ý 14

XSS je začátečnická chyba 24.5.2008 Jaku b Su ch ý 15

Jak se bránit? Drupal API : ) check_plain() je Váš kamarád check_markup() je Váš druhý kamarád Každý výstup od uživatele musí jít přes jednu z těchto funkcí <?php print "Vase jmeno je: ".check_plain($_get['jmeno']);?> $jmeno="<b>jenda</b>"; Vase jmeno je: <b>jenda</b> 24.5.2008 Jaku b Su ch ý 16

Cross Site Request Forgery Příklad: Váš web používá GET formuláře nebo POST formuláře nezabezpečené proti CSRF např. pro smazání zápisu v databázi... http://www.example.com/smaz zapis.php?id_zapisu=990 Podaří se mi někam vložit tento odkaz a donutím administrátora, který je zároveň přihlášen na svůj web na něj kliknout. Co se stane? 24.5.2008 Jaku b Su ch ý 17

Cross Site Request Forgery (Ano, záznam z databáze zmizí) Funguje jak pro GET, tak pro POST! Jak se bránit? 24.5.2008 Jaku b Su ch ý 18

Forms API Forms API je systém pro tvorbu webových formulářů Dostupné od Drupalu 4.7 Cíl: Poskytnout standardizovaný způsob tvorby formulářů Ošetřit nebezpečí spojená s formuláři 24.5.2008 Jaku b Su ch ý 19

Forms API z hlediska programátora Vytvoří asociativní pole, které definuje formulář Zapouzdří ho do funkce jmenoformulare_form() Vytvoří funkce jmenoformulare_form_validate() a jmenoformulare_form_submit() Zavolá drupal_get_form('jmenoformulare_form') 24.5.2008 Jaku b Su ch ý 20

Forms API z hlediska Drupalu Zařídí vygenerování HTML kódu formuláře jmenoformulare_form_validate() po stisknutí Submit tlačítka jmenoformulare_form_submit() po stisknutí Submit tlačítka a úspěšné validaci form validace submit validní nevalidní 24.5.2008 Jaku b Su ch ý 21

Příklad function demo_form(&$form_state) { $form['nid'] = array( '#title' => 'Titulek', '#type' => 'textfield', '#required' => TRUE, ); $form['submit'] = array( '#type' => 'submit', '#value' => 'Odeslat', ); return $form; } 24.5.2008 Jaku b Su ch ý 22

Příklad function demo_form_validate($form, &$form_state) { if (strlen($form_state['values']['nid']) < 3) { form_set_error('nid', t('enter 3 chars!')); } } Anglicky! function demo_form_submit($form, &$form_state) { // Delej NECO } 24.5.2008 Jaku b Su ch ý 23

Možnosti Forms API Generuje formuláře Typy políček: textfield, textarea, checkbox, radio, submit, file password, atd. Automaticky je zabezpečuje proti CSRF pomocí tokenu Automaticky zabezpečuje možnosti checkbox a radio Umožňuje autodoplňování Umožňuje plné šablonování formuláře Ovládání povinných a nepovinných položek A mnoho dalšího 24.5.2008 Jaku b Su ch ý 24

Jak udělat vlastní modul Moduly jsou prostředky, jak do Drupalu doplňovat funkce bez nutnosti úpravy kódu samotného jádra To, co dělá Drupal silnou zbraní 90 % všech požadavků lze dnes zajistit pomocí již existujících modulů Zvláště pak CCK + Views Co když to nejde jinak? Buďte si jisti! Radši se zeptejte, než začnete vynalézat kolo 24.5.2008 Jaku b Su ch ý 25

Základy Vytvořte adresář v sites/all/modules/jmenomodulu (pro nás demo) V něm vytvořte soubor demo.info name = "Jmeno modulu" description = "Popis modulu delsi text." core = 6.x Kompatibilita jádra Vytvořte soubor demo.module demo.module je Váš hlavní soubor 24.5.2008 Jaku b Su ch ý 26

Základy Do demo.module patří všechny Vaše funkce Drupal se stará o volání těch potřebných Best practices: oddělovat funkční celky do více souborů 24.5.2008 Jaku b Su ch ý 27

Základní stránka a její zobrazení Funkce demo_menu, vytvoří stránku s URL demo/stranka Při návštěvě Drupal zavolá funkci demo_display function demo_menu() { $items = array(); $items['demo/stranka'] = array( 'title' => 'Demo stranka', 'description' => 'Pouze ukazka menu', 'page callback' => 'demo_display', 'access arguments' => array('access site'), ); return $items; } 24.5.2008 Jaku b Su ch ý 28

Základní stránka a její zobrazení function demo_display() { $obsah = 'Ahoj svete!'; return $obsah; } 24.5.2008 Jaku b Su ch ý 29

Základní stránka a její zobrazení Vytvoří stránku demo/testformulare Při návštěvě Drupal zavolá funkci Forms API drupal_get_form('demo_neco_form') function demo_menu() { $items = array(); $items['demo/testformulare'] = array( 'title' => 'Poptavka naseho reseni', 'page callback' => 'drupal_get_form', 'page arguments' => array('demo_neco_form'), ); return $items; } 24.5.2008 Jaku b Su ch ý 30

Základní stránka a její zobrazení Vytvoří stránku demo/testformulare Při návštěvě Drupal zavolá funkci Forms API drupal_get_form('demo_neco_form') function demo_menu() { $items = array(); $items['demo/testformulare'] = array( 'title' => 'Poptavka naseho reseni', 'page callback' => 'drupal_get_form', 'page arguments' => array('demo_neco_form'), ); return $items; } 24.5.2008 Jaku b Su ch ý 31

Hooks Hooks (háky) jsou prostředkem, jak zasahovat do dění v Drupal jádru bez nutnosti měnit stávající kód Hook se věší na určitou událost v Drupalu Když se událost stane, příslušný modul zavolá všechny funkce, které implementují daný hook Hook se vždy jmenuje hook_jmenohooku() kde hook se zamění za jméno modulu 24.5.2008 Jaku b Su ch ý 32

Příklad Pamatujete na demo_menu()? demo_menu() je implementací hook_menu() Když Drupal zjišťuje, jaké URL (stránky) v instalaci existují, zavolá všechny funkce, které implementují hook_menu() Hook spouští Drupal, ne programátor 24.5.2008 Jaku b Su ch ý 33

Příklad Drupal ukládá uzel a zavolá všechny funkce, které se jmenují jmenomodulu_nodeapi() 24.5.2008 Jaku b Su ch ý 34

Nejznámější hooky hook_block Vytváří, zobrazuje bloky hook_comment Spouští se při vytvoření, úpravě, smazání, zobrazení, apod. komentáře hook_form_alter Velmi užitečný, mění formulář vygenerovaný pomocí Forms API hook_menu Pro definici stránek hook_taxonomy Spustí se při vytvoření, úpravě, slovníku či termínu taxonomy hook_user Při vytvoření, úpravě, uživatele hook_perm Definuje práva přístupu 24.5.2008 Jaku b Su ch ý 35

Další hooky http://api.drupal.org/api/group/hooks 24.5.2008 Jaku b Su ch ý 36

Lokalizace Drupal může mít lokalizované rozhraní Jak se k tomu postavit jako vývojář modulu? Funkce t() slouží jako zapouzdření všech vypisovaných textů Napíšu: print t('node'); Výsledek: Slovo přeložené do aktuálního jazyka Drupal překládá Anglicky > Jazyk Proto je nutné psát texty v angličtině 24.5.2008 Jaku b Su ch ý 37

Schema API Drupal 6 představil Schema API Obecné rozhraní pro deklaraci databázových schémat Asociativní pole Zlepšuje kompatibilitu mezi databázemi http://api.drupal.org/?q=api/group/schemaapi/head 24.5.2008 Jaku b Su ch ý 38

Batch API Drupal 6 představil Batch API API pro spouštění časově náročných úloh Typický příklad: import českého překladu Programátor rozdělí úlohu na libovolný počet iterací Batch API zajistí spuštění všech iterací po sobě Řeší problémy s nedostatkem paměti či času v PHP Pamatujete na bílé obrazovky při importu lokalizace v Drupalu 5 na svých low cost webhosting účtech? 24.5.2008 Jaku b Su ch ý 39

XML RPC API Vzdálené spouštění definovaných Drupal funkcí XML RPC je obecné API, Drupal ho pouze podporuje Příklad: Grafický klient pro blogování do Drupalu 24.5.2008 Jaku b Su ch ý 40

Další API Cache API AJAX API AHAH API 24.5.2008 Jaku b Su ch ý 41

Jak pokračovat http://api.drupal.org http://drupal.org/node/326 24.5.2008 Jaku b Su ch ý 42

KONEC Máte dotazy? Jakub Suchý e mail: info@jsuchy.cz http://www.drupal.cz 24.5.2008 Jaku b Su ch ý 43