Tietoturva Web-kehityksessä             &    Zend Frameworkissä    PHP User Group Finland         24.11.2011
Kuka?• Carl (Kalle) Vuorinen         • Matti Suominen  –                      :ssa     –                   :ssa      vuode...
Mitä?• Tietoturva                                  • Zend Framework     – OWASP Top Ten                            – MVC f...
Miksi?
Miksi?
Miksi?
Miksi?
Miksi?
Tietoturva ZendFrameworkissä
SQL injektio
SQL injektio• Erikoismerkkien muuntaminen  – Escaping• Syötteiden tarkistukset  – Filtteröinti & validointi• SQL lauseiden...
Prepared statements• Zend_Db_Adapter & Zend_Db_Statement  $sql = SELECT * FROM bugs WHERE bug_id = ?;  $result = $db->fetc...
XSS
XSS• Tulosteiden siistiminen  – Escape output• Syötteiden tarkistukset  – Filtteröinti & validointi• PHP session konfiguro...
Escape output• Zend_View escape() metodi  <?php foreach ($this->books as $key => $val): ?>  <tr>       <td><?php echo $thi...
Filtteröinti & validointi• Zend_Form ja Zend_Filter &  Zend_Validate  $this->addElement(      text, username, array(      ...
Filtteröinti & validointi - HTML• HTMLPurifier  – HTML Purifier defeats XSS with an audited    whitelist   http://htmlpuri...
CSRF
CSRF• Piilotettu uniikki tunniste  – Hidden unique token
Piilotettu uniikki tunniste• Zend_Form_Hash  $form->addElement(hash, no_csrf_foo, array(salt => unique));• Automaattinen C...
Riittämätön salasanojensuojaus
Riittämätön salasanojen             suojaus• Hashing  – MD5 ei riitä  – bcrypt  – Hitaampi on parempi
Hashing• PHPASS – Portable PHP password hashing framework   http://www.openwall.com/phpass/ – class My_Auth_Adapter_DbTabl...
Kysymyksiä ?
Referenssit•   http://framework.zend.com/•   https://www.owasp.org/•   http://static.zend.com/topics/Webinar-Zend-Secure-A...
Upcoming SlideShare
Loading in...5
×

3.w3 php user group 24112011 tietoturva web-kehityksessa-&-zend-frameworkissa carl vuorinen

1,946

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,946
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

3.w3 php user group 24112011 tietoturva web-kehityksessa-&-zend-frameworkissa carl vuorinen

  1. 1. Tietoturva Web-kehityksessä & Zend Frameworkissä PHP User Group Finland 24.11.2011
  2. 2. Kuka?• Carl (Kalle) Vuorinen • Matti Suominen – :ssa – :ssa vuodesta 2005 vuodesta 2007 • PHP kehittäjä • Tietoturvahörhö • Tiiminvetäjä • Osakas • Osakas
  3. 3. Mitä?• Tietoturva • Zend Framework – OWASP Top Ten – MVC framework – 10 kriittisintä web – Komponentti kirjasto sovellusten tietoturvariskiä Extending the art & spirit of PHP, Zend Framework is based on simplicity, – Injektio, XSS, CSRF, object-oriented best practices, salasanojen suojaus corporate friendly licensing, and ahttps://www.owasp.org/index.php/Top_10_2010 rigorously tested agile codebase. http://framework.zend.com/about/overview
  4. 4. Miksi?
  5. 5. Miksi?
  6. 6. Miksi?
  7. 7. Miksi?
  8. 8. Miksi?
  9. 9. Tietoturva ZendFrameworkissä
  10. 10. SQL injektio
  11. 11. SQL injektio• Erikoismerkkien muuntaminen – Escaping• Syötteiden tarkistukset – Filtteröinti & validointi• SQL lauseiden esikäsittely – Prepared statements
  12. 12. Prepared statements• Zend_Db_Adapter & Zend_Db_Statement $sql = SELECT * FROM bugs WHERE bug_id = ?; $result = $db->fetchAll($sql, $bugId);• Zend_Db_Select $select = $db->select() ->from(products, array(product_id, product_name, price)) ->where(price > ?, $minimumPrice);• Zend_Db_Table $table = new Bugs(); $rows = $table->find($bugId);
  13. 13. XSS
  14. 14. XSS• Tulosteiden siistiminen – Escape output• Syötteiden tarkistukset – Filtteröinti & validointi• PHP session konfigurointi – httpOnly cookie
  15. 15. Escape output• 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; ?>
  16. 16. Filtteröinti & validointi• Zend_Form ja Zend_Filter & Zend_Validate $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,}$/)) ) ));• Zend_Filter_Input
  17. 17. Filtteröinti & validointi - HTML• HTMLPurifier – HTML Purifier defeats XSS with an audited whitelist http://htmlpurifier.org/ – class My_Filter_HtmlPurifier implements Zend_Filter_Interface
  18. 18. CSRF
  19. 19. CSRF• Piilotettu uniikki tunniste – Hidden unique token
  20. 20. Piilotettu uniikki tunniste• Zend_Form_Hash $form->addElement(hash, no_csrf_foo, array(salt => unique));• Automaattinen CSRF suojaus – Extend Zend_Form• Linkkien suojaus – Javascript POST
  21. 21. Riittämätön salasanojensuojaus
  22. 22. Riittämätön salasanojen suojaus• Hashing – MD5 ei riitä – bcrypt – Hitaampi on parempi
  23. 23. Hashing• PHPASS – Portable PHP password hashing framework http://www.openwall.com/phpass/ – class My_Auth_Adapter_DbTableHash extends Zend_Auth_Adapter_DbTable
  24. 24. Kysymyksiä ?
  25. 25. Referenssit• 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/
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×