WEBES ALKALMAZÁSFEJLESZTÉS 1.



Hasonló dokumentumok
WEBES ALKALMAZÁSFEJLESZTÉS 1.

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

WEBFEJLESZTÉS 2. MUNKAMENET-KEZELÉS, HITELESÍTÉS

Megtanuljuk, hogyan lehet egy web-alkalmazással adatbázishoz csatlakozni Pontosan megnézzük a PHP lehetőségeit o MySQL-hez o Oracle-höz

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC

PHP-MySQL. Adatbázisok gyakorlat

PHP. Adatbázisok gyakorlat

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő A PHP programozási nyelv JDBC, ODBC

Webtárhely létrehozása a helyen. Lépések Teendő 1. Böngészőbe beírni: 2. Jobb oldalon regisztrálni (tárhelyigénylés).

10.óra CodeIgniter Framework #3. Gyimesi Ákos

Web-fejlesztés NGM_IN002_1

Gyakorlati vizsgatevékenység A

Gyakorlati vizsgatevékenység B

Webes alkalmazások fejlesztése. Bevezetés az ASP.NET MVC 5 keretrendszerbe

MVC. Model View Controller

Model View Controller alapú alkalmazásfejlesztés

Web programozás I. 4. előadás

PHP MySQL, Java JDBC MySQL. Adatbázisok az iskolában 2012 Dr. Balázs Péter Palatinus Endre és Erdőhelyi Balázs diái alapján

Nyilvántartási Rendszer

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

CodeIgniter keretrendszer

WEBFEJLESZTÉS 2. ADATTÁROLÁS, FÁJLOK

AdoDB a gyakorlatban

Biztonságos PHP a gyakorlatban

Webapp (in)security. Gyakori hibákról és azok kivédéséről fejlesztőknek és üzemeltetőknek egyaránt. Veres-Szentkirályi András

JAVA webes alkalmazások

9.óra CodeIgniter Framework #1. Gyimesi Ákos

Miért érdemes váltani, mikor ezeket más szoftverek is tudják?

Webes alkalmazások fejlesztése

WEBES ALKALMAZÁSFEJLESZTÉS 1.

Szerver oldali technológiák Szerver oldali script nyelvek PHP

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET) Cserép Máté.

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET Core) Cserép Máté

Webes alkalmazások fejlesztése 4. előadás. Megjelenítés és tartalomkezelés (ASP.NET)

Postfilter. Kadlecsik József KFKI RMKI

A Java EE 5 plattform

JavaServer Pages (JSP) (folytatás)

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

Microsoft SQL Server telepítése

Adatbázisok elleni fenyegetések rendszerezése. Fleiner Rita BMF/NIK Robothadviselés 2009

<Insert Picture Here> Migráció MS Access-ről Oracle Application Express-re

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 4.ELŐADÁS. Adatbázis alapú alkalmazások készítése PHP-ben

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

10. évfolyam 105 óra azonosító számú Hálózatok, programozás és adatbázis-kezelés 105 óra Adatbázis- és szoftverfejlesztés gyakorlat tantárgy

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.

Tartalomjegyzék. Weboldalüzemeltetői praktikák... 1 Átlag weboldal... 1 Wordpress praktikák... 2

Java Programozás 11. Ea: MVC modell

Moodle -egy ingyenes, sokoldalú LMS rendszer használata a felsőoktatásban

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

Kedvenc Linkek a témakörben: MySQL mindenkinek Vizuális adatbázis tervezés

Az iskolai rendszerű képzésben az összefüggő szakmai gyakorlat időtartama. 10. évfolyam Adatbázis- és szoftverfejlesztés gyakorlat 50 óra

A NetBeans IDE Ubuntu Linux operációs rendszeren

Testreszabott alkalmazások fejlesztése Notes és Quickr környezetben

Web programozás I. tantárgyi információk

JAVA SE/ME tanfolyam tematika

JEE tutorial. Zsíros Levente, 2012

MIKOVINY SÁMUEL TÉRINFORMATIKAI EMLÉKVERSENY

web works hungary Rövid technikai tájékoztató Mars (mars.intelliweb.hu) szerverünkkel kapcsolatban meglévő és új ügyfeleink számára.

A Matarka szerszámosládája

A WORDPRESS TELEPÍTÉSÉNEK LÉPÉSEI

WEB PROGRAMOZÁS 3.ELŐADÁS. Űrlapok

Web programoz as

Az Evolut Főkönyv program telepítési és beállítási útmutatója v2.0

Dspace fejlesztési tapasztalatok, problémák és megoldások

Bemutatkozás. Heilig Szabolcs Hojtsy Gábor Illés Szabolcs Palócz István

Digitális aláíró program telepítése az ERA rendszeren

Webes alkalmazások fejlesztése 1. előadás. Webes alkalmazások és biztonságuk

A gyakorlat során MySQL adatbázis szerver és a böngészőben futó phpmyadmin használata javasolt. A gyakorlat során a következőket fogjuk gyakorolni:

Az SQL*Plus használata

Elektronikus levelek. Az informatikai biztonság alapjai II.

Petőfi Irodalmi Múzeum. megújuló rendszere technológiaváltás

Szathmáry László Debreceni Egyetem Informatikai Kar

RIA Rich Internet Application

Olyan eszközre van szükség, amelynél a webszerkesztés folyamatát a fejlesztő, nem pedig a program vezérli

S, mint secure. Nagy Attila Gábor Wildom Kft.

Oracle Audit Vault and Database Firewall. Gecseg Gyula Oracle DBA

KnowledgeTree dokumentumkezelő rendszer

A telepítési útmutató tartalma

Apache, MySQL, PHP/Perl NetWare-n

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

MŰSZAKI DOKUMENTÁCIÓ. Aleph WebOPAC elérhetővé tétele okostelefonon. Eötvös József Főiskola 6500 Baja, Szegedi út 2.

Webes alkalmazások fejlesztése 2. előadás. Webfejlesztés MVC architektúrában (ASP.NET) Webfejlesztés MVC architektúrában Fejlesztés ASP.

WEB-PROGRAMOZÁS II. 1. Egészítse ki a következő PHP kódot a következők szerint: a,b,c,d: <?php. interface Kiir { public function kiir();

2F Iskola fejlesztői dokumentáció

Internet programozása. 1. előadás

WordPress segédlet. Bevezető. Letöltés. Telepítés

CentOS 7 OTRS telepítése, beállítása

Iroda DEMO telepítési útmutató

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Adatbázis használata PHP-ből

Felhasználói leírás a DimNAV Server segédprogramhoz ( )

A NÉGY BŰVÖS HÁRMAS WWW FTP SQL PHP. BRKK::Békéscsaba Linux rendszergazda képzés 2008

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Miért jó ez: A Xampp csomag előnyös tulajdonságai: rendkívül jól felszerelt naprakész telepíteni-és frissíteni gyerekjáték.

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

Webes alkalmazások fejlesztése. 9. előadás Bevezetés az ASP.NET MVC keretrendszerbe

Átírás:

WEBES ALKALMAZÁSFEJLESZTÉS 1. Horváth Győző Egyetemi adjunktus 1117 Budapest, Pázmány Péter sétány 1/C, 2.420 Tel: (1) 372-2500/1816

Tartalom 2 Adatbázis-biztonság Model-View-Controller minta MVC keretrendszerek CodeIgniter

3 Adatbázis-biztonság

Biztonsági szempontok 4 Különböző vetületek Programozás Adminisztrációs Üzemeltetés Munkaszervezés Különböző rétegek Adatbázis Csatorna Kliens

Biztonsági szempontok 5 Adatbázis Ne a tulajdonos vagy adminisztrátor nevében kapcsolódjunk Saját felhasználó vagy csoport létrehozása Adatbázis, tábla, mező szintű jogosultságok beállítása Magasabb szintű elemek használata Nézetek Tárolt eljárások Triggerek Adatok titkosítása (pl. jelszó)

Biztonsági szempontok 6 Csatorna a szerver és kliens között Hálózati forgalom titkosítása Kliens SQL összeállításának módja Szövegösszefűzés (SQL injection) Paraméterkötés Adatok ellenőrzése Black list White list Megfelelő típusra hozatal Veszélyes karakterek escape-elése

SQL injection 7 Ellenőrizetlen adatok és kevésbé biztonságos SQL előállítási módszerek használata hibához illetéktelen hozzáféréshez vezethet

SQL injection 8 Elvárt működés $user = 'alma'; $pwd = 'korte'; $q = "SELECT count(1) from users where userid='" + $user + "' and passwd='" + $pwd + "'; "; $q === "SELECT count(1) from users where userid='alma' and passwd='korte'; " DE: $user = ''; $pwd = "' or '1'='1"; $q === "SELECT count(1) from users where userid='' and passwd='' or '1'='1'; "

SQL injection 9 //Elvárt mûködés $offset = 10; $q = "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;"; $q === "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET 10;"; //DE: $offset = "0; insert into pg_shadow(usename,usesysid,usesuper,usecatupd,passwd) select 'crack', usesysid, 't','t','crack' from pg_shadow where usename='postgres';"; $q === "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET 0; insert into pg_shadow(usename,usesysid,usesuper,usecatupd,passwd) select 'crack', usesysid, 't','t','crack' from pg_shadow where usename='postgres';;";

SQL injection 10 További példák union a selectben xp_cmdshell Linkek http://www.php.net/manual/en/security.database.sqlinjection.php http://www.unixwiz.net/techtips/sql-injection.html http://en.wikipedia.org/wiki/sql_injection

SQL injection elkerülése 11 Adatok ellenőrzése Speciális karakterek szűrése, escape-elése mysql_real_escape_string() Összefűzés helyett szövegsablon használata sprintf Összefűzés helyett adatkötés használata binding

Adatkötés (binding) 12 Adatbázis-kezelőnek támogatnia kell SQL utasításban csak paramétereket tüntetünk fel, nem konkrét értékeket A sablont az adatbázis-kezelő dolgozza fel, készíti elő A paraméterek konkrét értéket kapnak (típusos) Végrehajtás kezdeményezése

Adatkötés (binding) 13 Előnyei Nincs manuális escape-elés SQL utasítások többszöri futtatása újraértelmezés nélkül Bináris adatok hatékonyabb közlekedtetése Olvashatóbb kód Hátrányai Egyszer futó lekérdezéseknél lassabb Általában csak DML-re működik

14 Model-View-Controller minta

Model-View-Controller 16 Modell Alkalmazás adatai és folyamata Üzleti logika Nézet Web design, sablon, HTML, CSS, JavaScript Modell adatait jeleníti meg megfelelően formázva Vezérlő Folyamatot irányítja, begyűjti az input adatokat és azokat a modellnek és a nézetnek átadja

MVC architektúra 17 Vezérlő Modell Nézet

18 MVC a weben

19 MVC a weben

20 MVC a weben

Modell 21 Üzleti logika Alkalmazás adatai Tárolás, feldolgozás, absztrahálás Független a nézettől és a HTTP kérés feldolgozásától Általában nincs benne HTML és pl. $_GET Általában adatbázisokkal dolgozik Adatbázis-elérési absztrakció (réteg) Adatbázis-absztrakció (réteg)

Nézet 22 Megjelenítés HTML, CSS, JavaScript, XML, PDF, szöveg, kép Nem tartalmazhat logikát, adatfeldolgozást Sablonnyelv használata PHP alternatív szintaxis limitált utasításkészlet Smarty, stb.

PHP mint sablonnyelv (Savant2) 23 require_once 'Savant2.php'; $tpl =& new Savant2(); $tpl->assign('title', 'Colors of the Rainbow'); $tpl->assign('colors', array('red', 'orange', 'yellow', 'green', 'blue', 'indigo', 'violet')); $tpl->display('rainbow.tpl.php'); <html><head> <title><?php echo $this->title?></title> </head><body> <h1><?php echo $this->title?></h1> <ol> <?php foreach ($this->colors as $color):?> <li><?php echo $color?></li> <?php endforeach;?> </ol> </body></html>

Vezérlő 24 Az MVC minta legáltalánosíthatóbb része Kérés feldolgozása, adatok továbbítása a modellnek és nézetnek Több további részekre bontható bootstrap file Front Controller Action Controller

MVC előnye 25 Fejlesztési munkafolyamatokat támogatja Három fő szerepkör van egy fejlesztői csapatban Fejlesztők Modellen dolgoznak (PHP, adatbázis, algritmus, architektúra) Tervezők Nézeten dolgoznak (HTML, CSS, JavaScript, grafikus elemek, mockup, stb.) Integrátorok Vezérlőn dolgoznak, ők kapcsolják össze a modellt a nézettel, kevésbé képzettek, mint a fejlesztők

26 MVC keretrendszerek

Keretrendszerek 27 bizonyos filozófiának megfelelő szabályok gyűjteménye ahány keretrendszer, annyi féle szabályok korlátokat is jelentenek egységesebb alkalmazásfejlesztés szétválasztott kód és logika meghatározott könyvtárszerkezet csoportmunka támogatott rétegek szétválasztása

MVC-s keretrendszerek 28 Az MVC filozófiájára épülő keretrendszerek Nem egységesek, sokféle megoldás Alkalmazott minták Front Controller egy belépési pont MVC

Hogyan válasszunk keretrendszert 29 Architektúra Dokumentáció Közösség Támogatás Rugalmasság

30 CodeIgniter

CodeIgniter 31 PHP MVC keretrendszer http://codeigniter.com Jó dokumentáció: http://codeigniter.com/user_guide/ Egyik legrégebbi PHP MVC keretrendszer Nagy közösség

33 Oldal életciklusa

34 Könyvtárszerkezet

CodeIgniter URL-ek 35 Szegmens alapú URL kezelés pelda.hu/index.php/class/action/par1/par2 pelda.hu/class/action/par1/par2.htaccess beállítás Keresőbarát forma Könnyű könyvjelzőzni Beszédes RewriteEngine on RewriteCond $1!^(index\.php images robots\.txt) RewriteRule ^(.*)$ /index.php/$1 [L]

Konfiguráció 36 application/config könyvtárban config.php routes.php database.php autoload.php

Vezérlők 37 pelda.hu/index.php/products/detail/12 application/controllers/products.php Vezérlő egy osztály, amely a CI_Controller-ből származik Alapértelmezések Ha nincs class, akkor default_controller a config/routes.php-ban $route['default_controller'] = 'Main'; Ha nincs action, akkor: index Privát metódusok _-sal kezdődnek: _belso()

Vezérlő 38 class Products extends CI_Controller { public function construct() { parent:: construct(); //Konstruktor kódja } public function index() { //Alapértelmezett action } public function detail($id) { // $id-jú termék megjelenítése } private function _belso() { } }

Nézetek 39 application/views könyvtárba Vezérlő tölti be $this->load->view('detail') Több nézet betöltésekor az eredmény összefűzésre kerül Adatokat a nézetnek átadni 2. paraméterként lehet asszociatív tömbként A kulcsból változónevek lesznek a view-ban a megfelelő értékkel 3. paraméterként megadott true értékkel a view eredményét szövegesen vissza lehet kapni $string = $this->load->view('nezet', '', true);

Nézetek 40 class Products extends CI_Controller { public function index() { $data = array( 'alma' => 'piros', 'korte' => 'kukacos', ); $this->load->view('proba', $data); } } <html> <head> <title>my Blog</title> </head> <body> <p>az alma <?php echo $alma;?>.</p> <p>a körte <?php echo $korte;?>.</p> </body> </html>

Modellek 41 application/models könyvtárba Osztály CI_Model-ből származik Osztály nevének első betűje nagy Fájlnév kisbetűs Vezérlő tölti be általában $this->load->model('product_model'); Használata $this->product_model->get_products();

Modellek 42 class Product_model extends CI_Model { function construct() { parent:: construct(); $this->load->database(); } function get_products() { $query = $this->db->get('products'); return $query->result(); } } class Products extends CI_Controller { public function index() { $this->load->model('product_model'); $products = $this->procuct_model->get_products(); $this->load->view('proba', array( 'products' => $products, )); } }

Adatbázis használat 43 CodeIgniter tartalmaz egy adatbázis-elérési és adatbázis-absztrakciós réteget Adatbázis-kezelő független kód írása Konfiguráció: config/database.php Betöltés: $this->load->database(); Tipikusan a modellben használjuk Automatikus betöltés: config/autoload.php

Lekérdezések 44 $q = $this->db->query('sql') Adatkötés $this->db->query( 'select * from table where mezo1=? and mezo2=?', array('alma', 12) ); Eredmények $q->result() $q->result_array() $query = $this->db->query("sql"); foreach ($query->result() as $row) { echo $row->mezo1; echo $row->mezo2; }

Active record 46 $this->db->get('table') $this_>db->select() $this_>db->from() stb. $this_>db->insert('table', array()) $this_>db->update('table', array()) $this_>db->delete('table', array()) array(): kulcs-érték párok

Könyvtárak és segédfüggvények 47 Library $this->load->library(); Form Validation Input Email Helper Form helper URL helper HTML helper

49 Fejlesztői környezet

Fejlesztői környezet részei 50 Szerver oldalon webszerver PHP adatbázis-kezelő Kliens oldalon böngésző Fejlesztői környezet HTML, CSS és PHP szerkesztésére egyaránt alkalmas IDE Adatbázis kliens: adatbázisok elérésére és kezelésére SFTP, SCP kliens az állományok webszerverre töltéséhez

Szerver oldal 51 webprogramozas.inf.elte.hu Felhasználónév: ETRAZON Jelszó: almafa1 SSH klienssel bejelentkezve passwd paranccsal változtatható meg

Webszerver 52 Apache 2 Dokumentumok gyökérkönyvtára: http://webprogramozas.inf.elte.hu/~etrazon/ Ez a szerveren a következő mappa: ~/public_html/

PHP 53 Modulként telepítve nem processként, hanem threadként fut phpinfo()

Adatbázis-kezelő 54 MySQL webprogramozas.inf.elte.hu Csak localhostból érhető el Felhasználónév: neptun Jelszó: almafa1 Adatbázis: neptun

Böngésző 55 Bármelyik kurrens böngésző választható Kényelmesen és gyorsan lehessen fejlesztésre használni Kiegészítő modulok: http figyelése, validátorok Fejlesztőeszközök Forrás színezése Keresés a forrásban is Sütik, képek kezelése Funkciók letiltása Gyorsítótár ürítése

IDE 56 Kényelmi funkciók PHP, HTML és CSS szerkesztése szintaxis alapján színezés kódkiegészítés blokkok jelölése, össszecsukása behúzások intelligens kezelése nyomkövetés támogatása utasítások szignatúrája, leírása projektek kezelése állományok szerverre feltöltése verziókövető rendszerek integrálása kódrészletek definiálása pluginek kezelése Notepad++ Netbeans IDE Eclipse Aptana

Adatbázis kliensek 57 Sokféle funkciót kell ellátnunk Felhasználók és jogosultságok kezelése Táblák, nézetek, tárolt eljárások kezelése Adminisztrációs teendők Kliensek parancssori kliensek: mysql, mysql_dump, stb webes kliens: phpmyadmin asztali kliens: MySQL Workbench

SFTP, SCP kliensek 58 WinScp FileZilla Néhány IDE ezt automatikusan megteszi

Otthoni fejlesztéshez 59 XAMPP telepítőcsomag http://www.apachefriends.org/en/xampp.html Multiplatform XAMPP 1.7.3 tartalmazza Apache 2.2.14 (IPv6 enabled) + OpenSSL 0.9.8l MySQL 5.1.41 + PBXT engine PHP 5.3.1 phpmyadmin 3.2.4 Perl 5.10.1 FileZilla FTP Server 0.9.33 Mercury Mail Transport System 4.72

60 XAMPP telepítés

61 XAMPP kezdőlap (http://localhost/)

XAMPP Biztonsági figyelmeztetés 62 A feltelepült rendszerben A MYSQL adminisztrátornak nincs jelszó beállítva MYSQL démon a hálózaton elérhető phpmyadmin elérhető a hálózaton A XAMPP kezdőlap elérhető a hálózaton A Mercury és FileZilla alkalmazások alapértelmezett felhasználói adatai ismertek Ha nyilvános webszervert készítünk, akkor biztonságossá kell tenni

63 XAMPP biztonsági beállítások (Security)

64 XAMPP biztonsági beállítások (Security)

XAMPP portable 65 Nem kell telepíteni, pendriveról is működik Lépések Mappa létrehozása XAMPP ZIP változatának letöltése, kitömörítése a mappába setup_xampp.bat elindítása xampp-control.exe elindítása és a vezérlőpulton elindítható a kívánt szolgáltatás