25
PHP User Group Finland 24.11.2011

Tietoturva web-kehityksessä & Zend Frameworkissä

Embed Size (px)

DESCRIPTION

Presentation from PHP User Group Finland 24.11.2011 (in Finnish)

Citation preview

Page 1: Tietoturva web-kehityksessä & Zend Frameworkissä

PHP User Group Finland

24.11.2011

Page 2: Tietoturva web-kehityksessä & Zend Frameworkissä

• Carl (Kalle) Vuorinen

– :ssa

vuodesta 2005

• PHP kehittäjä

• Tiiminvetäjä

• Osakas

• Matti Suominen

– :ssa

vuodesta 2007

• Tietoturvahörhö

• Osakas

Page 3: Tietoturva web-kehityksessä & Zend Frameworkissä

• Tietoturva

– OWASP Top Ten

– 10 kriittisintä web

sovellusten

tietoturvariskiä

– Injektio, XSS, CSRF,

salasanojen suojaus https://www.owasp.org/index.php/Top_10_2010

• Zend Framework

– MVC framework

– Komponentti kirjasto

Extending the art & spirit of PHP, Zend

Framework is based on simplicity,

object-oriented best practices,

corporate friendly licensing, and a

rigorously tested agile codebase. http://framework.zend.com/about/overview

Page 4: Tietoturva web-kehityksessä & Zend Frameworkissä
Page 5: Tietoturva web-kehityksessä & Zend Frameworkissä
Page 6: Tietoturva web-kehityksessä & Zend Frameworkissä
Page 7: Tietoturva web-kehityksessä & Zend Frameworkissä
Page 8: Tietoturva web-kehityksessä & Zend Frameworkissä
Page 9: Tietoturva web-kehityksessä & Zend Frameworkissä
Page 11: Tietoturva web-kehityksessä & Zend Frameworkissä

• Erikoismerkkien muuntaminen

– Escaping

• Syötteiden tarkistukset

– Filtteröinti & validointi

• SQL lauseiden esikäsittely

– Prepared statements

Page 12: Tietoturva web-kehityksessä & Zend Frameworkissä

• Zend_Db_Adapter & Zend_Db_Statement

• Zend_Db_Select

• Zend_Db_Table

$table = new Bugs(); $rows = $table->find($bugId);

$sql = 'SELECT * FROM bugs WHERE bug_id = ?'; $result = $db->fetchAll($sql, $bugId);

$select = $db->select() ->from('products', array('product_id', 'product_name', 'price')) ->where('price > ?', $minimumPrice);

Page 14: Tietoturva web-kehityksessä & Zend Frameworkissä

• Tulosteiden siistiminen

– Escape output

• Syötteiden tarkistukset

– Filtteröinti & validointi

• PHP session konfigurointi

– httpOnly cookie

Page 15: Tietoturva web-kehityksessä & Zend Frameworkissä

• Zend_View escape() metodi

<?php foreach ($this->books as $key => $val): ?> <tr> <td><?php echo $this->escape($val['author']) ?></td> <td><?php echo $this->escape($val['title']) ?></td> </tr> <?php endforeach; ?>

Page 16: Tietoturva web-kehityksessä & Zend Frameworkissä

• Zend_Form ja Zend_Filter & Zend_Validate

• Zend_Filter_Input

$this->addElement( text', 'username', array( 'required' => true, 'label' => 'Username:', 'filters' => array('StringTrim', 'StringToLower'), 'validators' => array( 'Alnum', array('Regex', false, array('/^[a-z][a-z0-9]{2,}$/')) ) ));

Page 17: Tietoturva web-kehityksessä & Zend Frameworkissä

• HTMLPurifier

– HTML Purifier defeats XSS with an audited

whitelist http://htmlpurifier.org/

– class My_Filter_HtmlPurifier

implements Zend_Filter_Interface

Page 19: Tietoturva web-kehityksessä & Zend Frameworkissä

• Piilotettu uniikki tunniste

– Hidden unique token

Page 20: Tietoturva web-kehityksessä & Zend Frameworkissä

• Zend_Form_Hash

• Automaattinen CSRF suojaus – Extend Zend_Form

• Linkkien suojaus – Javascript POST

$form->addElement('hash', 'no_csrf_foo', array('salt' => 'unique'));

Page 22: Tietoturva web-kehityksessä & Zend Frameworkissä

• Hashing

– MD5 ei riitä

– bcrypt

– Hitaampi on parempi

Page 23: Tietoturva web-kehityksessä & Zend Frameworkissä

• PHPASS

– Portable PHP password hashing framework

http://www.openwall.com/phpass/

– class My_Auth_Adapter_DbTableHash

extends Zend_Auth_Adapter_DbTable

Page 24: Tietoturva web-kehityksessä & Zend Frameworkissä
Page 25: Tietoturva web-kehityksessä & Zend Frameworkissä

• http://framework.zend.com/

• https://www.owasp.org/

• http://static.zend.com/topics/Webinar-Zend-Secure-Application-Development-with-

the-Zend-Framework.pdf

• http://htmlpurifier.org/

• http://blog.astrumfutura.com/2008/05/example-zend-framework-blog-application-

tutorial-part-8-creating-and-editing-blog-entries-with-a-dash-of-htmlpurifier/

• https://www.owasp.org/index.php/Cross-

Site_Request_Forgery_%28CSRF%29_Prevention_Cheat_Sheet

• http://www.openwall.com/phpass/

• http://www.openwall.com/articles/PHP-Users-Passwords

• http://codahale.com/how-to-safely-store-a-password/