{"id":468778,"date":"2025-07-27T09:00:16","date_gmt":"2025-07-27T09:00:16","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=468778"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=468778","title":{"rendered":"<span>OWASP Top 10 API: \u041f\u043e\u043b\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440 \u0432\u0441\u0435\u0445 \u0443\u0433\u0440\u043e\u0437 \u0438 \u043a\u0430\u043a \u043e\u0442 \u043d\u0438\u0445 \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c\u0441\u044f<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0437\u0431\u043e\u0440 \u0442\u0435\u043c\u044b API TOP 10 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 API, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u0438 \u0441 \u0447\u0435\u043c \u0435\u0433\u043e \u0435\u0434\u044f\u0442. \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442:<\/p>\n<p><strong>API (Application Programming Interface)<\/strong> \u2014 <strong>\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/strong>, \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u0430\u0432\u0438\u043b \u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u0438 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u043c\u0438. API \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0440\u043e\u043b\u044c \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0430, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<\/p>\n<p>\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044b \u043f\u043e\u0439\u043c\u0443\u0442, \u043d\u043e \u043b\u044e\u0434\u0438 \u0431\u0435\u0437 \u043e\u043f\u044b\u0442\u0430, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u044f, \u043d\u0435 \u043e\u0441\u043e\u0437\u043d\u0430\u044e\u0442 \u0432\u0441\u044e \u043c\u044b\u0441\u043b\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u044f \u043e\u0441\u043c\u0435\u043b\u044e\u0441\u044c \u0432\u0437\u044f\u0442\u044c \u043d\u0430 \u0441\u0435\u0431\u044f \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0443 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432, \u0447\u0442\u043e \u0436\u0435 \u044d\u0442\u043e\u0442 \u0432\u0430\u0448 API?<\/p>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c, \u0447\u0442\u043e API (Application Programming Interface) \u2013 \u044d\u0442\u043e \u043a\u0430\u043a \u043e\u0444\u0438\u0446\u0438\u0430\u043d\u0442 \u0432 \u0440\u0435\u0441\u0442\u043e\u0440\u0430\u043d\u0435. \u0422\u044b (\u043a\u043b\u0438\u0435\u043d\u0442) \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0448\u044c \u0438 \u0434\u0435\u043b\u0430\u0435\u0448\u044c \u0437\u0430\u043a\u0430\u0437 \u043f\u043e \u043c\u0435\u043d\u044e. \u041e\u0444\u0438\u0446\u0438\u0430\u043d\u0442 (API) \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0432\u043e\u0439 \u0437\u0430\u043a\u0430\u0437, \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0435\u0433\u043e \u043d\u0430 \u043a\u0443\u0445\u043d\u044e (\u0441\u0435\u0440\u0432\u0438\u0441), \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u0438\u043d\u043e\u0441\u0438\u0442 \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u0431\u043b\u044e\u0434\u043e \u043e\u0431\u0440\u0430\u0442\u043d\u043e. \u0422\u044b \u043d\u0435 \u043b\u0430\u0437\u0430\u0435\u0448\u044c \u043d\u0430 \u043a\u0443\u0445\u043d\u044e \u0438 \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u0438\u0448\u044c \u0441\u0430\u043c \u2014 \u0442\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u043d\u0430\u0435\u0448\u044c, \u0447\u0442\u043e \u0441\u043a\u0430\u0436\u0438 \u00ab\u0434\u0430\u0439 \u0441\u0442\u0435\u0439\u043a \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u043f\u0440\u043e\u0436\u0430\u0440\u043a\u0438\u00bb \u0438 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0448\u044c \u0441\u0442\u0435\u0439\u043a.<\/p>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u044a\u044f\u0441\u043d\u044e \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435:<\/p>\n<h4>\u041f\u043e\u0433\u043e\u0434\u0430 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438<\/h4>\n<p><strong>\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e:<\/strong> \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u043d\u043e\u0437 \u043f\u043e\u0433\u043e\u0434\u044b \u0432 \u0442\u0432\u043e\u0451\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438.<\/p>\n<p><strong>\u0420\u0435\u0448\u0435\u043d\u0438\u0435:<\/strong> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0435 Weather API (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, OpenWeatherMap).<\/p>\n<p><strong>\u041a\u0430\u043a \u044d\u0442\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442\u044c:<\/strong><\/p>\n<p>1.\u00a0\u00a0\u00a0 \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0448\u044c\u0441\u044f \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0448\u044c API\u2011\u043a\u043b\u044e\u0447.<\/p>\n<p>2.\u00a0\u00a0\u00a0 \u0414\u0435\u043b\u0430\u0435\u0448\u044c \u0437\u0430\u043f\u0440\u043e\u0441:<\/p>\n<p>GET <a href=\"https:\/\/api.openweathermap.org\/data\/2.5\/weather?q=Moscow&amp;appid=YOUR_KEY\" rel=\"noopener noreferrer nofollow\">https:\/\/api.openweathermap.org\/data\/2.5\/weather?q=Moscow&amp;appid=YOUR_KEY<\/a><\/p>\n<p>3.\u00a0\u00a0\u00a0 \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0448\u044c JSON\u2011\u043e\u0442\u0432\u0435\u0442 \u0441 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043e\u0439, \u0432\u043b\u0430\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u0433\u043e\u0434\u044b<\/p>\n<p>\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u043d\u0430\u0448\u0435\u0439 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0435\u043c\u0435. \u041f\u0440\u043e\u0432\u0435\u0434\u0435\u043c \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044e API \u0432 \u0432\u0435\u0431-\u0432\u0435\u0440\u0441\u0438\u0438 \u201cVulnerable Bank\u201d.<\/p>\n<h2>\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 <\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 reverse engineering API, \u0447\u0442\u043e\u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u043d\u0430\u0448\u0443 \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 Postman. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c .yaml \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u0432 swagger editor. (\u0441\u043c. \u0420\u0438\u0441\u0443\u043d\u043e\u043a 1)<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/86a\/a87\/587\/86aa875875be912c387f033913bab193.png\" alt=\"\" title=\"\" width=\"624\" height=\"148\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/86a\/a87\/587\/86aa875875be912c387f033913bab193.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/86a\/a87\/587\/86aa875875be912c387f033913bab193.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0448 \u0444\u0430\u0439\u043b \u0438\u0437 swagger, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 Postman.<\/p>\n<h2>API 1: Broken Object Level Authorization (BOLA)<\/h2>\n<p>Broken Object Level Authorization (BOLA) (\u0440\u0430\u043d\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430 \u043a\u0430\u043a Insecure Direct Object Reference (IDOR)) \u2014 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0432 API, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0430\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0430\u043d\u043d\u044b\u043c, \u0438\u0437\u043c\u0435\u043d\u044f\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435.<\/p>\n<p>\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b<\/p>\n<p>\u0417\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u043e\u0442\u0432\u0435\u0442\u044b API, \u0438\u0449\u0443\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0432 \u0442\u043e\u043c, \u043a\u0430\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \/users\/{userID} \u0438\u043b\u0438 \/orders\/{orderID}). \u0417\u0430\u0442\u0435\u043c \u043e\u043d\u0438 \u043c\u0435\u043d\u044f\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u0441\u0432\u043e\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445, \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0430\u043d\u043d\u044b\u043c, \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u043c \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0438\u043b\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c.<\/p>\n<p>\u042d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f:<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0447\u043d\u0451\u043c \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f BOLA \u0438\u0437 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 API.<\/p>\n<p>\u00a0<\/p>\n<p>\u041a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e, \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c 2 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430, \u043a\u0430\u043a \u043c\u044b \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u0434\u043b\u044f IDOR. \u041d\u0430\u0437\u043e\u0432\u0435\u043c \u0438\u0445 Acount A \u0438 Account B \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u041d\u0430 Postman, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0432\u0430\u0448 baseurl \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 <a href=\"http:\/\/localhost:5000\" rel=\"noopener noreferrer nofollow\">http:\/\/localhost:5000<\/a>. \u0412\u043e\u0439\u0434\u0438\u0442\u0435.<\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c ID \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0438\u043b\u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440, \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c API\/transfer. \u041d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e \u0438\u0437 Account A \u0432 Account B, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435\u043f\u0443\u0441\u0442\u0443\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439. (\u0441\u043c. \u0420\u0438\u0441\u0443\u043d\u043e\u043a 2)<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/433\/547\/ef4\/433547ef4c390fffd68192feefd1bd90.png\" width=\"624\" height=\"127\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/433\/547\/ef4\/433547ef4c390fffd68192feefd1bd90.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/433\/547\/ef4\/433547ef4c390fffd68192feefd1bd90.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041d\u0430\u0448 \u0431\u0430\u043b\u0430\u043d\u0441 \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u043f\u0435\u0440\u0435\u0432\u0435\u043b\u0438 100$ \u043d\u0430 Account B. <\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 Account A \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0439\u0442\u0438 \u0432 endpoint \/transaction Account B. (\u0441\u043c. \u0420\u0438\u0441\u0443\u043d\u043e\u043a 3, 4)<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dd3\/06a\/8a7\/dd306a8a7083aadd5cb942420bdc69f5.png\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 3 \u2013 \u0412\u0445\u043e\u0434 \u0432 Account B.\" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 3 \u2013 \u0412\u0445\u043e\u0434 \u0432 Account B.\" width=\"598\" height=\"341\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/dd3\/06a\/8a7\/dd306a8a7083aadd5cb942420bdc69f5.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dd3\/06a\/8a7\/dd306a8a7083aadd5cb942420bdc69f5.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 3 \u2013 \u0412\u0445\u043e\u0434 \u0432 Account B.<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6ba\/957\/ea4\/6ba957ea4f3c96f7430fa7158d05b3ab.png\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 4 \u2013 \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 Account A.\" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 4 \u2013 \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 Account A.\" width=\"624\" height=\"285\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/6ba\/957\/ea4\/6ba957ea4f3c96f7430fa7158d05b3ab.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6ba\/957\/ea4\/6ba957ea4f3c96f7430fa7158d05b3ab.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 4 \u2013 \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 Account A.<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430 \u0420\u0438\u0441\u0443\u043d\u043a\u0435 4 \u0437\u0430\u043c\u0435\u0442\u043d\u043e, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 API (BOLA), \u0442.\u043a. \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 Account A \u0431\u0443\u0434\u0443\u0447\u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u0434 Account B.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c API \u043d\u0435 \u0432 \u0441\u0438\u043b\u0430\u0445 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041e\u043d \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0430\u043b, \u0447\u0442\u043e \u043b\u044e\u0431\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c \u043b\u044e\u0431\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d \u0438 \u0435\u0441\u043b\u0438 \u043e\u043d \u0437\u043d\u0430\u0435\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0434\u0440\u0443\u0433\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430. <\/p>\n<p>\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f: \u0412\u0441\u0435\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u044f\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f<\/p>\n<p>1. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u0447\u0442\u043e ID \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c\u044b\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u043c<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438: \u0432 middleware \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c userId \u0438\u0437 JWT-\u0442\u043e\u043a\u0435\u043d\u0430 \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0441 accountId \u0432 URL:<\/p>\n<p>2. \u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u0432\u0432\u043e\u0434 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430<\/p>\n<p>\u0412\u0441\u0435\u0433\u0434\u0430 \u0431\u0435\u0440\u0451\u043c userId \u0438\u0437 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u2014 JWT-\u0442\u043e\u043a\u0435\u043d\u0430 \u0438\u043b\u0438 \u0441\u0435\u0441\u0441\u0438\u0438, \u043d\u043e \u043d\u0435 \u0438\u0437 \u0442\u0435\u043b\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438\u043b\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432:<\/p>\n<p>const userId = <a href=\"http:\/\/req.user.id\" rel=\"noopener noreferrer nofollow\">req.user.id<\/a>; \/\/ \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430<\/p>\n<p>3. \u0412\u043d\u0435\u0434\u0440\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e CRUD-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430<\/p>\n<p>\u00a0<\/p>\n<p>\u0418\u0442\u043e\u0433: \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0438 \u0441\u0442\u0440\u043e\u0433\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 userId \u2194 resourceId \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u0442 object-level authorization bypass.<\/p>\n<p>\u00a0<\/p>\n<h2>API2: Broken Authentication<\/h2>\n<p>Broken authentication \u2014 \u044d\u0442\u043e \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0441\u0435\u0441\u0441\u0438\u044f\u043c\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0435\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u044b\u043c \u0434\u0430\u043d\u043d\u044b\u043c \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c.<\/p>\n<p>\u0418\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u0441\u0431\u0440\u043e\u0441\u0430 \u043f\u0430\u0440\u043e\u043b\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c\u0441\u044f \u043a\u0430\u043a Account B \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f \u0434\u043b\u044f Account A (\u0441\u043c. \u0420\u0438\u0441\u0443\u043d\u043e\u043a 5).<\/p>\n<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/afc\/bae\/183\/afcbae183b324abcc6ccce16a4c99267.png\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 5 \u2013 \u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 \u0441\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f. \" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 5 \u2013 \u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 \u0441\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f. \" width=\"624\" height=\"188\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/afc\/bae\/183\/afcbae183b324abcc6ccce16a4c99267.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/afc\/bae\/183\/afcbae183b324abcc6ccce16a4c99267.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 5 \u2013 \u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 \u0441\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f. <\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u044f\u0445, flow \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0442\u043e\u043a\u0435\u043d \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u043e\u043c\u0443 \u0436\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e, \u0447\u0435\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0438\u043b\u0438 \u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u043f\u043e\u0447\u0442\u0443 \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u0439 \u0442\u043e\u043a\u0435\u043d. \u041c\u044b \u0443\u0431\u0435\u0434\u0438\u043b\u0438\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0438. <\/p>\n<p>\u041f\u043e\u0444\u0430\u0437\u0437\u0438\u043c PIN-\u043a\u043e\u0434.<\/p>\n<p>\u041f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043f\u043e\u043b\u0435 reset_pin \u0432\u0441\u0435 \u0442\u0440\u0435\u0445\u0437\u043d\u0430\u0447\u043d\u044b\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439.<\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443: <\/p>\n<p>1)\u00a0\u00a0\u00a0 wfuzz -d \u2018{\u201cusername\u201d:\u201dtest\u201d, \u201creset_pin\u201d:\u201dFUZZ\u201d, \u201cnew_password\u201d:\u201d reset@021\u201d}\u2019 -H \u2018Content-type: application\/json\u2019 -z file,\/usr\/share\/wordlists\/wfuzz\/digits-000-999.txt -u <a href=\"http:\/\/127.0.0.1:5000\/api\/v2\/reset-password\" rel=\"noopener noreferrer nofollow\">http:\/\/127.0.0.1:5000\/api\/v2\/reset-password<\/a> \u2013hc 400 <\/p>\n<p>2)\u00a0\u00a0\u00a0 \u041b\u0438\u0431\u043e BurpSuite<\/p>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: \u0432\u0445\u043e\u0434\u0438\u043c \u0432 Account A \u0441 \u043d\u043e\u0432\u044b\u043c \u043f\u0430\u0440\u043e\u043b\u0435\u043c. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d \u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430 \u0423\u0417. <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2d4\/d68\/724\/2d4d68724adf4e3f729cf3ae23ea00fc.png\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 6 \u2013 \u0412\u0445\u043e\u0434 \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u0440\u043e\u0441\u0430 \u043f\u0430\u0440\u043e\u043b\u044f.\" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 6 \u2013 \u0412\u0445\u043e\u0434 \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u0440\u043e\u0441\u0430 \u043f\u0430\u0440\u043e\u043b\u044f.\" width=\"624\" height=\"274\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/2d4\/d68\/724\/2d4d68724adf4e3f729cf3ae23ea00fc.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2d4\/d68\/724\/2d4d68724adf4e3f729cf3ae23ea00fc.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 6 \u2013 \u0412\u0445\u043e\u0434 \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u0440\u043e\u0441\u0430 \u043f\u0430\u0440\u043e\u043b\u044f.<\/figcaption><\/div>\n<\/figure>\n<p>Fix:<\/p>\n<p>1)\u00a0\u00a0\u00a0 \u0412\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435, \u0447\u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 (\u0441\u0431\u0440\u043e\u0441, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0438 \u0442.\u043f.) \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0441\u0430\u043c\u0438\u043c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0435\u043c \u0443\u0447\u0435\u0442\u043a\u0438 \u0438\u043b\u0438 \u043f\u043e email \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044e.<\/p>\n<p>2)\u00a0\u00a0\u00a0 \u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0439\u0442\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0435 email + \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u0431\u0435\u0437 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 email-\u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.<\/p>\n<p>3)\u00a0\u00a0\u00a0 \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0439\u0442\u0435 \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0432\u0432\u043e\u0434\u0430 PIN\/\u043a\u043e\u0434\u043e\u0432 \u0438 \u043b\u043e\u0433\u0438\u0440\u0443\u0439\u0442\u0435 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u0444\u0443\u0437\u0437\u0438\u043d\u0433.<\/p>\n<h2>API3: BOPLA (Broken Object Property Level Authorization)<\/h2>\n<p>Broken Object Property Level Authorization (BOPLA) &#8212; \u043c\u0435\u043d\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f, \u043d\u043e \u043e\u043f\u0430\u0441\u043d\u0430\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c API, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u0438\u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043d\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0438\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0443.<\/p>\n<p>\u0414\u0432\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 BOPLA:<\/p>\n<p>\u0427\u0440\u0435\u0437\u043c\u0435\u0440\u043d\u043e\u0435 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<p>\u042d\u0442\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 API \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0447\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e. \u041e\u0431\u044b\u0447\u043d\u043e API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0435\u0433\u043e \u0437\u0430\u0434\u0430\u0447\u0438. \u041e\u0434\u043d\u0430\u043a\u043e, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0447\u0440\u0435\u0437\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, API \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0442\u0430\u043a\u0443\u044e \u043a\u0430\u043a: <\/p>\n<p><em>Admin status (is_admin: true)<\/em><\/p>\n<p>\u00a0\u041c\u0430\u0441\u0441\u043e\u0432\u043e\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<p>\u041c\u0430\u0441\u0441\u043e\u0432\u043e\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 &#8212; \u044d\u0442\u043e \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 API \u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b. \u0412 \u0442\u0438\u043f\u0438\u0447\u043d\u043e\u043c API, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u044f \u043f\u043e\u0447\u0442\u0430 \u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c). \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438 \u043c\u0430\u0441\u0441\u043e\u0432\u043e\u043c \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p>\u0417\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u0430\u043a \u0431\u0430\u043b\u0430\u043d\u0441, is_admin \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043d \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430.<\/p>\n<p>\u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c (Mass Assignment) \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0435\u0441\u0441\u0438\u0438 \u0432 \u0433\u043b\u0430\u0432\u0435 API6.<\/p>\n<p>\u042d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f:<\/p>\n<p>\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0435 \u043f\u043e\u043b\u0435 (Excessive Data Exposure).<\/p>\n<p>\u041f\u0440\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0449\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u043e\u043b\u044f, \u043d\u043e \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 is_admin (\u0441\u043c \u0420\u0438\u0441\u0443\u043d\u043e\u043a 7).<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/94e\/5ae\/27e\/94e5ae27eb905c8fbbb137c8e616787d.png\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 8 \u2013 \u0423\u044f\u0437\u0432\u0438\u043c\u043e\u0435 \u043f\u043e\u043b\u0435 is_admin.\" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 8 \u2013 \u0423\u044f\u0437\u0432\u0438\u043c\u043e\u0435 \u043f\u043e\u043b\u0435 is_admin.\" width=\"624\" height=\"320\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/94e\/5ae\/27e\/94e5ae27eb905c8fbbb137c8e616787d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/94e\/5ae\/27e\/94e5ae27eb905c8fbbb137c8e616787d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 8 \u2013 \u0423\u044f\u0437\u0432\u0438\u043c\u043e\u0435 \u043f\u043e\u043b\u0435 is_admin.<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (Account C) \u0438 \u0434\u0430\u0434\u0438\u043c \u0435\u043c\u0443 \u043f\u0440\u0430\u0432\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e, \u0432\u0432\u0435\u0434\u044f is_admin: true \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 API (\u0441\u043c. \u0420\u0438\u0441\u0443\u043d\u043e\u043a 8).<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/935\/784\/a77\/935784a774731059739e04298d8cb6e6.png\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 8 \u2013 \u042d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f Mass Assignment \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 8 \u2013 \u042d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f Mass Assignment \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \" width=\"624\" height=\"457\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/935\/784\/a77\/935784a774731059739e04298d8cb6e6.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/935\/784\/a77\/935784a774731059739e04298d8cb6e6.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 8 \u2013 \u042d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f Mass Assignment \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. <\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u0432\u0435\u0431 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043f\u0443\u043d\u043a\u0442, Admin Panel, \u0433\u0434\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\/\u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0431\u0430\u043b\u0430\u043d\u0441\u043e\u043c (\u0441\u043c. \u0420\u0438\u0441\u0443\u043d\u043e\u043a 9).<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/203\/3e1\/54b\/2033e154b2dff660bad9d8c624d4d902.png\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 9 \u2013 \u041f\u0430\u043d\u0435\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u043e\u0441\u043b\u0435 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 Mass Assignment.\" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 9 \u2013 \u041f\u0430\u043d\u0435\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u043e\u0441\u043b\u0435 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 Mass Assignment.\" width=\"624\" height=\"385\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/203\/3e1\/54b\/2033e154b2dff660bad9d8c624d4d902.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/203\/3e1\/54b\/2033e154b2dff660bad9d8c624d4d902.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 9 \u2013 \u041f\u0430\u043d\u0435\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u043e\u0441\u043b\u0435 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 Mass Assignment.<\/figcaption><\/div>\n<\/figure>\n<p>Excessive Data Exposure \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0430 \u0443\u0437\u043d\u0430\u0442\u044c \u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u043b\u044f is_admin. Mass Assignment \u2014 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0435\u0439 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u0430\u043b\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c is_admin: true. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043f\u043e\u043b\u043d\u044b\u0439 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c.<\/p>\n<p>Fix: \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044e BOPLA<\/p>\n<p>1. Whitelist \u043f\u043e\u043b\u0435\u0439: \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u044f\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b (username, email, password) \u0438 \u043e\u0442\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435.<\/p>\n<p>2. \u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0432\u0430\u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u043f\u043e\u043b\u044f: \u043b\u044e\u0431\u044b\u0435 \u043f\u043e\u043b\u044f \u0432\u043d\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443.<\/p>\n<p>3. \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u00ab\u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438\u00bb \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435: \u0444\u043b\u0430\u0433\u0438 is_admin, role, balance \u0438 \u0442.\u2009\u043f. \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u043e\u0439, \u0430 \u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u043c \u0432\u0432\u043e\u0434\u043e\u043c.<\/p>\n<p>4. \u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433: \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u0438 \u043e\u043f\u043e\u0432\u0435\u0449\u0430\u0442\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u043e \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438.<\/p>\n<h2>API4: Unrestricted Resource Consumption<\/h2>\n<p>Unrestricted Resource Consumption \u2014 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 API \u043d\u0435 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 (\u0447\u0438\u0441\u043b\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043e\u0431\u044a\u0451\u043c \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u0438 \u0442.\u043f.). \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0430\u043c \u0438\u043b\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0438\u0441\u0447\u0435\u0440\u043f\u0430\u0442\u044c CPU, \u043f\u0430\u043c\u044f\u0442\u044c, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0441\u0435\u0442\u0438 \u0438\u043b\u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441 \u0443\u043f\u0430\u0434\u0451\u0442 \u0438\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e \u0434\u0435\u0433\u0440\u0430\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c (DoS).<\/p>\n<p>\u042d\u0442\u0430\u043f 1. \u041f\u043e\u0438\u0441\u043a \u00ab\u0433\u043e\u0440\u044f\u0447\u0438\u0445\u00bb \u0442\u043e\u0447\u0435\u043a API<\/p>\n<p>1. \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0432\u0441\u0435 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0442\u044f\u0436\u0451\u043b\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438:<\/p>\n<p>\u041b\u043e\u0433\u0438\u043d\/\u0444\u043e\u0437\u0433\u043e\u0442\u044b \u043f\u0430\u0440\u043e\u043b\u044f (\u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u044e\u0442 email, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 SMS)<\/p>\n<p>\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0430\u043c\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0430 \u043b\u043e\u0433\u043e\u0432, \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439)<\/p>\n<p>CRUD-\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043d\u0430\u0431\u043e\u0440\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440<\/p>\n<p>\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442: GET \/api\/v4\/transactions?start=0&amp;limit=10000<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0432\u0430\u0436\u043d\u043e: \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043b\u0438\u043c\u0438\u0442\u0430 limit \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0438 \u0441\u043e\u0442\u043d\u0438 \u0442\u044b\u0441\u044f\u0447 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0437\u0430 \u043e\u0434\u0438\u043d \u0432\u044b\u0437\u043e\u0432.<\/p>\n<p>\u042d\u0442\u0430\u043f 2. \u0417\u0430\u043f\u0443\u0441\u043a \u0430\u0442\u0430\u043a\u0438 \u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435 \u0437\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438<\/p>\n<p>\u0421\u0435\u0440\u0432\u0435\u0440 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043a \u0442\u044f\u0436\u0451\u043b\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432:<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438\u0437 \u0411\u0414<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 JSON-\u043e\u0442\u0432\u0435\u0442\u043e\u0432<\/p>\n<p>\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u043f\u0438\u043a CPU, \u0440\u043e\u0441\u0442 \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a \u0438 \u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>\u042d\u0442\u0430\u043f 3. \u042d\u0441\u043a\u0430\u043b\u0430\u0446\u0438\u044f \u2014 \u043e\u0442\u043a\u0430\u0437 \u0432 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0438 (DoS)<\/p>\n<p>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0439\u0442\u0438, \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0442\u0432\u0435\u0442. \u0412 \u0445\u0443\u0434\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\/VM \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0451\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0438 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430.<\/p>\n<p>\u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043c\u0435\u0448\u0430\u0442\u044c \u00ab\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0444\u043e\u0437\u0433\u043e\u0442\u0430 \u043f\u0430\u0440\u043e\u043b\u044f\u00bb (\u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0430 SMS\/email) \u0438 \u00ab\u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0432\u0441\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438\u00bb \u2014 \u0442\u0430\u043a \u0432\u044b \u00ab\u0441\u044a\u0435\u0434\u0438\u0442\u0435\u00bb \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e CPU \u0438 \u043f\u0430\u043c\u044f\u0442\u044c, \u043d\u043e \u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0447\u0442\u043e\u0432\u043e\u0433\u043e\/SMS-\u0441\u0435\u0440\u0432\u0438\u0441\u0430.<\/p>\n<p>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u0437\u0430\u0449\u0438\u0442\u0435<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"center\"><strong>\u041c\u0435\u0442\u043e\u0434 \u0437\u0430\u0449\u0438\u0442\u044b<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \/ \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>Rate  Limiting<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435  \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0441 \u043e\u0434\u043d\u043e\u0433\u043e IP \u0438\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0435 \u0431\u043e\u043b\u0435\u0435  100 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u043c\u0438\u043d\u0443\u0442\u0443.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>\u041f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044f  \u0441 \u0436\u0451\u0441\u0442\u043a\u0438\u043c cap\u2019\u043e\u043c<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435  \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<\/td>\n<td>\n<p align=\"left\">limit \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 100\u2013200. \u0411\u043e\u043b\u044c\u0448\u0438\u0435  \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0442\u044c.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>\u0422\u0430\u0439\u043c\u0430\u0443\u0442\u044b \u0438  \u043b\u0438\u043c\u0438\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430  \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<\/td>\n<td>\n<p align=\"left\">client_body_timeout, worker_memory_limit, max_execution_time  (Nginx\/Gunicorn\/Node.js).<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>\u0422\u043e\u043b\u044c\u043a\u043e  \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0422\u044f\u0436\u0451\u043b\u044b\u0435  \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0440\u0430\u0432, \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c throttle.<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u042d\u043a\u0441\u043f\u043e\u0440\u0442  \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c  \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433  \u0438 \u0430\u043b\u0451\u0440\u0442\u044b<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0438\u0441\u0442\u0435\u043c\u0430  \u043e\u043f\u043e\u0432\u0435\u0449\u0430\u0435\u0442 \u043f\u0440\u0438 \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u044f\u0445: \u0441\u043a\u0430\u0447\u043a\u0430\u0445 RPS, \u0440\u043e\u0441\u0442\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a, \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0435 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u00a0<\/p>\n<h2>API5: BFLA (Broken Function Level Authorization)<\/h2>\n<p>\u00a0<\/p>\n<p>\u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u0440\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u044e\u0442 \u044d\u0442\u0443 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c.<\/p>\n<p>1. BFLA (Broken Function Level Authorization)<\/p>\n<p>\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438\u043b\u0438 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u043e\u0432 API. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d, \u043d\u043e \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442, \u0438\u043c\u0435\u0435\u0442 \u043b\u0438 \u043e\u043d \u043f\u0440\u0430\u0432\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u0438\u0435 \u0437\u0430\u0439\u043c\u043e\u0432 \u0438 \u0442.\u043f.).<\/p>\n<p>2. RBAC (Role-Based Access Control)<\/p>\n<p>\u041c\u043e\u0434\u0435\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c, \u043f\u0440\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0440\u043e\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (\u0430\u0434\u043c\u0438\u043d, \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440, \u043a\u043b\u0438\u0435\u043d\u0442 \u0438 \u0442.\u0434.).<\/p>\n<p>3. JWT Forging<\/p>\n<p>\u0412\u0437\u043b\u043e\u043c JWT-\u0442\u043e\u043a\u0435\u043d\u0430 \u043f\u0443\u0442\u0451\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0435\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438 (payload) \u0438 \u043f\u043e\u0434\u043f\u0438\u0441\u0438, \u0435\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0434\u043e\u043b\u0436\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c.<\/p>\n<p>\u041f\u043e\u0448\u0430\u0433\u043e\u0432\u0430\u044f \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f BFLA<\/p>\n<p>\u0428\u0430\u0433 1. \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0438 \u043f\u043e\u0438\u0441\u043a \u0430\u0434\u043c\u0438\u043d-\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u043e\u0432<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 (Account B) \u0438 \u0438\u0437\u0443\u0447\u0430\u0435\u043c Swagger\/OpenAPI-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e.<\/p>\n<p>\u041d\u0430\u0445\u043e\u0434\u0438\u043c: \u044d\u043d\u0442\u043f\u043e\u0438\u043d\u0442\u044b \u0432\u0440\u043e\u0434\u0435 DELETE \/api\/v5\/users\/{id} \u0438\u043b\u0438 POST \/api\/v5\/loans\/{id}\/approve, \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0430\u0434\u043c\u0438\u043d\u043e\u0432.<\/p>\n<p>\u0428\u0430\u0433 2. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0431\u0435\u0437 \u0444\u043e\u0440\u0436\u0430 JWT<\/p>\n<p>\u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0431\u0435\u0437 \u043f\u043e\u0434\u0434\u0435\u043b\u043a\u0438 \u0442\u043e\u043a\u0435\u043d\u0430 (\u0441\u043c. \u0420\u0438\u0441\u0443\u043d\u043e\u043a 10)<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ea6\/565\/108\/ea6565108bf7081a0529f89869d1a29d.png\" alt=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 10 \u2013 \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043d\u0435 \u0441\u0432\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442.\" title=\"\u0420\u0438\u0441\u0443\u043d\u043e\u043a 10 \u2013 \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043d\u0435 \u0441\u0432\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442.\" width=\"624\" height=\"175\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/ea6\/565\/108\/ea6565108bf7081a0529f89869d1a29d.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ea6\/565\/108\/ea6565108bf7081a0529f89869d1a29d.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 10 \u2013 \u041e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043d\u0435 \u0441\u0432\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442.<\/figcaption><\/div>\n<\/figure>\n<p>\u0428\u0430\u0433 3. \u0424\u043e\u0440\u0436\u0438\u043d\u0433 JWT \u0434\u043b\u044f \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u044f \u0440\u043e\u043b\u0438<\/p>\n<p>\u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c \u0442\u043e\u043a\u0435\u043d: \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c JWT \u0438\u0437 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. \u0414\u0435\u043a\u043e\u0434\u0438\u0440\u0443\u0435\u043c \u0447\u0435\u0440\u0435\u0437 <a href=\"http:\/\/jwt.io\" rel=\"noopener noreferrer nofollow\">jwt.io<\/a>: \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c header \u0438 payload. \u041c\u0435\u043d\u044f\u0435\u043c is_admin: false \u2192 true \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c:<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u041d\u0418\u0427\u0415\u0413\u041e \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043a\u0440\u043e\u043c\u0435 \u043f\u043e\u0434\u043f\u0438\u0441\u0438, \u043f\u043e\u0434\u0434\u0435\u043b\u043a\u0430 \u043f\u0440\u043e\u0439\u0434\u0451\u0442. \u041f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u043d\u043e\u0432\u044b\u0439 \u0442\u043e\u043a\u0435\u043d: \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0437\u0430\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 header+payload, \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u043e\u0434\u043f\u0438\u0441\u044c (\u0441\u0435\u0440\u0432\u0435\u0440 \u0435\u0451 \u043d\u0435 \u0432\u0430\u043b\u0438\u0434\u0438\u0440\u0443\u0435\u0442). \u041e\u0431\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u043e\u043c\u0443 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0443 \u0441 \u043f\u043e\u0434\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0442\u043e\u043a\u0435\u043d\u043e\u043c. \u0414\u0435\u0442\u0430\u043b\u0438 \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u044b \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0430\u0445 \u043d\u0438\u0436\u0435.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1b3\/f19\/0ba\/1b3f190ba487ada4acaf67421a16e37b.png\" width=\"624\" height=\"348\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/1b3\/f19\/0ba\/1b3f190ba487ada4acaf67421a16e37b.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/1b3\/f19\/0ba\/1b3f190ba487ada4acaf67421a16e37b.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/29e\/efc\/dce\/29eefcdce8f319e503644e86c1b8dc94.png\" width=\"624\" height=\"362\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/29e\/efc\/dce\/29eefcdce8f319e503644e86c1b8dc94.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/29e\/efc\/dce\/29eefcdce8f319e503644e86c1b8dc94.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c69\/76a\/4b7\/c6976a4b7d4ea1435cd50dd5530f65e8.png\" width=\"624\" height=\"187\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/c69\/76a\/4b7\/c6976a4b7d4ea1435cd50dd5530f65e8.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c69\/76a\/4b7\/c6976a4b7d4ea1435cd50dd5530f65e8.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0421\u0435\u0440\u0432\u0435\u0440 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0442\u043e\u043a\u0435\u043d\u0430 \u0438 \u043f\u043e\u043b\u0435 is_admin \u0438\u0437 payload, \u043d\u043e \u043d\u0435 \u0432\u0430\u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u043b \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0438 \u043d\u0435 \u043e\u0431\u0440\u0430\u0449\u0430\u043b\u0441\u044f \u043a \u0431\u0430\u0437\u0435 \u0437\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u043e\u043b\u044c\u044e.<\/p>\n<p>\u00a0<\/p>\n<p>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u0437\u0430\u0449\u0438\u0442\u0435<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"center\"><strong>\u041c\u0435\u0442\u043e\u0434 \u0437\u0430\u0449\u0438\u0442\u044b<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u041f\u0440\u0438\u043c\u0435\u0440\u044b \/ \u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>Rate Limiting<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0441 \u043e\u0434\u043d\u043e\u0433\u043e IP \u0438\u043b\u0438  \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0435 \u0431\u043e\u043b\u0435\u0435 100 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u043c\u0438\u043d\u0443\u0442\u0443.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>\u041f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044f \u0441 \u0436\u0451\u0441\u0442\u043a\u0438\u043c cap\u2019\u043e\u043c<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>limit<\/code>  \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435 100\u2013200. \u0411\u043e\u043b\u044c\u0448\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0442\u044c.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>\u0422\u0430\u0439\u043c\u0430\u0443\u0442\u044b \u0438 \u043b\u0438\u043c\u0438\u0442\u044b \u043f\u0430\u043c\u044f\u0442\u0438<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043d\u0430 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435  \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>client_body_timeout<\/code>,  <code>worker_memory_limit<\/code>,  <code>max_execution_time<\/code>  (Nginx\/Gunicorn\/Node.js).<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>\u0422\u043e\u043b\u044c\u043a\u043e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0422\u044f\u0436\u0451\u043b\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043f\u0440\u0430\u0432, \u0441  \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c throttle.<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u0434\u0430\u043d\u043d\u044b\u0445, \u0441\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445  \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0438 \u0430\u043b\u0451\u0440\u0442\u044b<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0438\u0441\u0442\u0435\u043c\u0430 \u043e\u043f\u043e\u0432\u0435\u0449\u0430\u0435\u0442 \u043f\u0440\u0438 \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u044f\u0445: \u0441\u043a\u0430\u0447\u043a\u0430\u0445 RPS, \u0440\u043e\u0441\u0442\u0435  \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a, \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0435 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0410\u043b\u0451\u0440\u0442\u044b \u043f\u0440\u0438 \u0440\u0435\u0437\u043a\u043e\u043c \u0440\u043e\u0441\u0442\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438\u043b\u0438 \u043f\u0430\u0434\u0435\u043d\u0438\u0438 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0439  \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430  \u0440\u043e\u043b\u0435\u0439<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u043e\u0441\u043b\u0435 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u0440\u043e\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0438\u0437  \u0431\u0430\u0437\u044b.<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0417\u0430\u043f\u0440\u043e\u0441 \u0432 \u0411\u0414 \u0438\u043b\u0438 \u043a\u044d\u0448 \u043f\u0435\u0440\u0435\u0434 \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a API.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u0438\u0440\u0443\u0435\u043c\u044b\u0439 JWT<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u044c \u0442\u043e\u043a\u0435\u043d\u0430 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u0435 \u0441\u0440\u043e\u043a\u0438  \u0436\u0438\u0437\u043d\u0438 + refresh-\u0442\u043e\u043a\u0435\u043d\u044b.<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>access_token<\/code>  \u2014 15 \u043c\u0438\u043d\u0443\u0442, <code>refresh_token<\/code> \u2014 7  \u0434\u043d\u0435\u0439.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>RBAC \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043a\u043e\u0434\u0430<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0430 \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0435 \u0440\u043e\u043b\u0438  (\u0434\u0435\u043a\u043e\u0440\u0430\u0442\u043e\u0440\u044b, middleware).<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>@roles_required('admin')<\/code>  \u0432 Python \u0438\u043b\u0438 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u0438 \u0432 Spring.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0438\u0445  \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041c\u0438\u043d\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0441 \u0432\u044b\u0441\u043e\u043a\u0438\u043c \u0443\u0440\u043e\u0432\u043d\u0435\u043c  \u0434\u043e\u0441\u0442\u0443\u043f\u0430.<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u044b \u2014 \u0442\u043e\u043b\u044c\u043a\u043e 2-3 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0430, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u2014  read-only.<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong>\u0410\u0443\u0434\u0438\u0442 \u0438 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0424\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c  \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c.<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c <code>user_id<\/code>,  <code>endpoint<\/code>, <code>timestamp<\/code>, <code>status<\/code>.<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0421\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u043f\u0440\u0430\u0432\u0438\u043b \u043d\u0430\u0434\u0451\u0436\u043d\u043e \u0437\u0430\u0449\u0438\u0442\u0438\u0442 \u043e\u0442 BFLA-\u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0438 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u0443\u044e \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439.\u00a0<\/p>\n<h2>API6: Unrestricted Access to Sensitive Business Flows<\/h2>\n<p>API6: Unrestricted Access to Sensitive Business Flows <\/p>\n<p>\u0412 \u0441\u0432\u043e\u0435\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u044f \u0447\u0430\u0441\u0442\u043e \u0432\u0438\u0434\u0435\u043b, \u043a\u0430\u043a \u0434\u0430\u0436\u0435 \u0437\u0440\u0435\u043b\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0435\u0434\u043e\u043e\u0446\u0435\u043d\u0438\u0432\u0430\u044e\u0442 \u0443\u0433\u0440\u043e\u0437\u044b, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0434\u0430\u044e\u0442 \u00ab\u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u00bb \u043a \u0432\u0430\u0436\u043d\u044b\u043c \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c \u0447\u0435\u0440\u0435\u0437 API. \u041d\u0438\u0436\u0435 \u2014 \u043e\u0431\u0437\u043e\u0440 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438, \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0435\u0451 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043a\u043e\u043d\u0442\u0440\u043c\u0435\u0440.<\/p>\n<p>1. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438<\/p>\n<p>Unrestricted Access to Sensitive Business Flows \u2014 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 API \u043d\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0431\u0438\u0437\u043d\u0435\u0441-\u0444\u0443\u043d\u043a\u0446\u0438\u044f\u043c (\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0431\u0430\u043b\u0430\u043d\u0441\u043e\u0432, \u043e\u0434\u043e\u0431\u0440\u0435\u043d\u0438\u0435 \u043a\u0440\u0435\u0434\u0438\u0442\u043e\u0432 \u0438 \u0442.\u043f.) \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0440\u043e\u043b\u0435\u0439 \u0438\u043b\u0438 \u043f\u0440\u0430\u0432 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f.<\/p>\n<p>\u0413\u0434\u0435 \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f:<\/p>\n<p>\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u044c\u043d\u044b\u0435 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b, \u043a\u0443\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u00ab\u043b\u0438\u0448\u043d\u0438\u0435\u00bb \u043f\u043e\u043b\u044f (mass assignment).<\/p>\n<p>\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 (\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u0443\u0441\u043e\u0432 \u0437\u0430\u044f\u0432\u043e\u043a) \u0431\u0435\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0440\u043e\u043b\u0438.<\/p>\n<p>2. \u042d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f<\/p>\n<p>\u042f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0432\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u043d\u0435\u0442 \u043b\u0438 \u00ab\u0434\u044b\u0440\u00bb \u043f\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0412 \u044d\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e Mass Assignment (BOPLA) \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u0435\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0431\u0430\u043b\u0430\u043d\u0441\u0430:<\/p>\n<p>1. \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0430<\/p>\n<p>\u042f \u0447\u0430\u0441\u0442\u043e \u0432\u0438\u0434\u0435\u043b, \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0437\u0430\u0431\u044b\u0432\u0430\u044e\u0442 \u0436\u0451\u0441\u0442\u043a\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u043e\u043b\u0435\u0439, \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u044b\u0445 \u043e\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0430.<\/p>\n<p>2. \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430<\/p>\n<p>3. \u041c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u044f \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u043e\u0442\u043e\u043a\u043e\u043c<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0441 \u0442\u0430\u043a\u0438\u043c \u0431\u0430\u043b\u0430\u043d\u0441\u043e\u043c \u043c\u043e\u0436\u043d\u043e:<\/p>\n<p>\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c<\/p>\n<p>\u0412\u0437\u043b\u0430\u043c\u044b\u0432\u0430\u0442\u044c \u043b\u0438\u043c\u0438\u0442\u044b \u043a\u0440\u0435\u0434\u0438\u0442\u043d\u043e\u0433\u043e API<\/p>\n<p>\u041f\u043e\u0434\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u0447\u0451\u0442\u044b \u043f\u043e \u043a\u0430\u0441\u0441\u043e\u0432\u044b\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c<\/p>\n<p>\u041d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435 \u043d\u0438\u0436\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 \u0432\u0441\u044f \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0430\u0442\u0430\u043a\u0438, \u0441 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0430\u043b\u0430\u043d\u0441\u0430 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0435\u0442 \u043d\u0430 \u044d\u0442\u043e \u043f\u0440\u0430\u0432. <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dcd\/f1d\/019\/dcdf1d019cfea2b5cb3532abf8cb686a.png\" width=\"624\" height=\"333\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/dcd\/f1d\/019\/dcdf1d019cfea2b5cb3532abf8cb686a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/dcd\/f1d\/019\/dcdf1d019cfea2b5cb3532abf8cb686a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041a\u043e\u043d\u0442\u0440\u043c\u0435\u0440\u044b<\/p>\n<p>\u042f \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u0443\u0440\u043e\u0432\u043d\u044f\u043c \u0437\u0430\u0449\u0438\u0442\u044b:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"center\"><strong>\u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u041c\u0435\u0442\u043e\u0434 \u0437\u0430\u0449\u0438\u0442\u044b<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u041f\u0440\u0438\u043c\u0435\u0440\u044b\/\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435  \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">Whitelist-\u043f\u043e\u043b\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c  \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0435\u0434\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0420\u0430\u0437\u0440\u0435\u0448\u0451\u043d\u043d\u044b\u0435  \u043f\u043e\u043b\u044f: username, email, password; \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u044e\u0442\u0441\u044f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\n<\/td>\n<td>\n<p align=\"left\">\u0421\u043b\u043e\u0438  \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435  \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0411\u0430\u043b\u0430\u043d\u0441\u044b \u0438 \u0440\u043e\u043b\u0438  \u0438\u0437\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c\u0438 \u043c\u0435\u0442\u043e\u0434\u0430\u043c\u0438, \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u0432\u0432\u043e\u0434<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Middleware  \u0438 RBAC<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0420\u043e\u043b\u044c-\u043d\u0430-\u0443\u0440\u043e\u0432\u043d\u0435-\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u042f\u0432\u043d\u043e\u0435  \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0445 \u0440\u043e\u043b\u0435\u0439 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e endpoint<\/p>\n<\/td>\n<td>\n<p align=\"left\"><a href=\"http:\/\/router.post\" rel=\"noopener noreferrer nofollow\">router.post<\/a>(&#8216;\/admin\/approve-loan&#8217;,  authorize(&#8216;admin&#8217;), &#8230;)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\n<\/td>\n<td>\n<p align=\"left\">\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f  \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0440\u043e\u043b\u0435\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u043d\u0438\u0435  \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0440\u043e\u043b\u0438 \u0438\u0437 \u0411\u0414 \u0432 middleware<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0417\u0430\u043f\u0440\u043e\u0441 \u043a  \u0411\u0414 \u043f\u0435\u0440\u0435\u0434 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439, \u0430 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u0438\u0435 JWT payload<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0435\u0440\u0432\u0435\u0440\u043d\u0430\u044f  \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430  \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, balance)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0442\u043a\u043b\u043e\u043d\u044f\u0442\u044c  \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0435 balance \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u0440\u043e\u0444\u0438\u043b\u044f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\n<\/td>\n<td>\n<p align=\"left\">\u0421\u0445\u0435\u043c\u044b  \u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435  \u0441\u0442\u0440\u043e\u0433\u0438\u0445 \u0441\u0445\u0435\u043c \u0441 \u0437\u0430\u043f\u0440\u0435\u0442\u043e\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">Joi\/JSON  Schema \u0441 additionalProperties:  false<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0414\u043e\u043f. \u043c\u0435\u0440\u044b  \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">MFA \u0434\u043b\u044f  \u0440\u0438\u0441\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041c\u043d\u043e\u0433\u043e\u0444\u0430\u043a\u0442\u043e\u0440\u043d\u0430\u044f  \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435  \u0447\u0435\u0440\u0435\u0437 SMS\/TOTP \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 &gt; $1000<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\n<\/td>\n<td>\n<p align=\"left\">Rate  Limiting &amp; Throttling<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435  \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430 \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 endpoints<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041c\u0430\u043a\u0441. 5  \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432 \u043c\u0438\u043d\u0443\u0442\u0443 \u043d\u0430 \u0441\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\n<\/td>\n<td>\n<p align=\"left\">\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433  \u0438 \u0430\u043b\u0451\u0440\u0442\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u0435  \u0430\u043d\u043e\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0410\u043b\u0451\u0440\u0442\u044b \u043f\u0440\u0438  \u0440\u0435\u0437\u043a\u043e\u043c \u0440\u043e\u0441\u0442\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432 \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0431\u0430\u043b\u0430\u043d\u0441\u043e\u0432<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h2>API7: SSRF (Server Side Request Forgery)\u00a0<\/h2>\n<p>\u0421\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0439 \u043e\u0431\u043c\u0430\u043d: \u0421\u0443\u0442\u044c \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431 \u0443\u0433\u0440\u043e\u0437\u044b<\/p>\n<p>SSRF \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u043b\u0430\u0433\u043e\u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u044b\u0435 API \u0432 \u043e\u0440\u0443\u0436\u0438\u0435 \u043f\u0440\u043e\u0442\u0438\u0432 \u0438\u0445 \u0436\u0435 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b. Server-Side Request Forgery (SSRF) \u2014 \u044d\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a \u0437\u0430\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u0435\u043b\u0430\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0438\u0437\u0432\u043d\u0435. <\/p>\n<p>\u0413\u0434\u0435 \u043a\u0440\u043e\u0435\u0442\u0441\u044f \u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c? \u0412 \u043b\u044e\u0431\u043e\u043c API, \u043a\u043e\u0442\u043e\u0440\u044b\u0439:<\/p>\n<p>\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0444\u0430\u0439\u043b\u044b \u043f\u043e URL \/api\/upload?url=&#8230;)<\/p>\n<p>\u0418\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441 \u0432\u0435\u0431-\u0445\u0443\u043a\u0430\u043c\u0438 (\/api\/webhook?endpoint=&#8230;)<\/p>\n<p>\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 (\/api\/scan?target=&#8230;)<\/p>\n<p>2. \u041c\u0435\u0445\u0430\u043d\u0438\u043a\u0430 \u0430\u0442\u0430\u043a\u0438: \u0420\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438<\/p>\n<p>\u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0438\u0437 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u2014 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u0430 \u0441 \u043f\u043b\u0430\u0442\u0435\u0436\u043d\u044b\u043c \u0448\u043b\u044e\u0437\u043e\u043c, \u0433\u0434\u0435 SSRF \u043f\u0440\u0438\u0432\u0435\u043b \u043a \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0430\u0446\u0438\u0438 \u0432\u0441\u0435\u0439 \u0441\u0435\u0442\u0438.<\/p>\n<p>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439: \u0410\u0442\u0430\u043a\u0430 \u043d\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>http<\/strong><\/p>\n<p align=\"left\">\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">POST \/api\/export-pdf HTTP\/1.1<\/p>\n<p align=\"left\">Authorization: Bearer &lt;valid_token&gt;<\/p>\n<p align=\"left\">Content-Type: application\/json<\/p>\n<p align=\"left\">\u00a0<\/p>\n<p align=\"left\">{<\/p>\n<p align=\"left\">&#171;html&#187;:  &#171;&lt;h1&gt;Report&lt;\/h1&gt;&#187;,<\/p>\n<p align=\"left\">&#171;css&#187;: &#171;@import  &#8216;<a href=\"http:\/\/169.254.169.254\/latest\/meta-data\/\" rel=\"noopener noreferrer nofollow\">http:\/\/169.254.169.254\/latest\/meta-data\/<\/a>&#8216;&#187;<\/p>\n<p align=\"left\">}<\/p>\n<p align=\"left\">\u00a0<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0423\u044f\u0437\u0432\u0438\u043c\u044b\u0439 \u043e\u0442\u0432\u0435\u0442:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>http<\/strong><\/p>\n<p align=\"left\"><strong>\u00a0<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">HTTP\/1.1 200 OK<\/p>\n<p align=\"left\">Content-Type: application\/pdf<\/p>\n<p align=\"left\">\u00a0<\/p>\n<p align=\"left\">PDF-1.4<\/p>\n<p align=\"left\">[\u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435  \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 EC2 \u0432 \u0432\u0438\u0434\u0435 CSS]<\/p>\n<p align=\"left\">\u00a0<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435: \u0423\u0442\u0435\u0447\u043a\u0430 IAM-\u043a\u043b\u044e\u0447\u0435\u0439 \u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a S3-\u0431\u0430\u043a\u0435\u0442\u0430\u043c.<\/p>\n<p>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f:<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u0412\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u043a\u0441\u0438-\u0441\u0435\u0440\u0432\u0438\u0441\u044b: \u0412\u0441\u0435 \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0447\u0435\u0440\u0435\u0437 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441 \u0441 \u0431\u0435\u043b\u044b\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0434\u043e\u043c\u0435\u043d\u043e\u0432<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Zero Trust \u0434\u043b\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445 \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0439: \u0422\u0440\u0435\u0431\u0443\u0439\u0442\u0435 mTLS \u0434\u0430\u0436\u0435 \u0434\u043b\u044f <a href=\"http:\/\/localhost\" rel=\"noopener noreferrer nofollow\">localhost<\/a>-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432<\/p>\n<p>Middleware-\u0440\u0435\u0448\u0435\u043d\u0438\u044f:<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u0421\u0442\u0440\u043e\u0433\u0430\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f URL:<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u043e\u043f\u0430\u0441\u043d\u044b\u0445 \u0441\u0445\u0435\u043c: \u041e\u0442\u043a\u043b\u043e\u043d\u044f\u0439\u0442\u0435 file:\/\/, gopher:\/\/, dict:\/\/<\/p>\n<p>Best practices:<\/p>\n<p>1.\u00a0\u00a0\u00a0 \u0421\u0435\u0442\u0435\u0432\u043e\u0439 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f: \u041e\u0442\u0434\u0435\u043b\u0438\u0442\u0435 worker-\u043d\u043e\u0434\u044b \u043e\u0442 \u0441\u0438\u0441\u0442\u0435\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f<\/p>\n<p>2.\u00a0\u00a0\u00a0 Sandbox \u0434\u043b\u044f \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u043d\u0433\u0430: \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0432 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u0445<\/p>\n<p>3.\u00a0\u00a0\u00a0 \u0413\u043b\u0443\u0431\u043e\u043a\u0438\u0439 \u0438\u043d\u0441\u043f\u0435\u043a\u0442\u0438\u043d\u0433: \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 WAF \u0441 SSRF-\u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a RFC1918)<\/p>\n<p>4.\u00a0\u00a0\u00a0 \u0425\u0430\u0440\u0434\u0435\u043d\u0438\u043d\u0433 \u043e\u0431\u043b\u0430\u043a\u0430: \u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 IMDSv1, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 IMDSv2<\/p>\n<p>SRF \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u201c\u0442\u0438\u0445\u0438\u043c \u0443\u0431\u0438\u0439\u0446\u0435\u0439\u201d \u2014 34% \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0439 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0432\u0430\u044e\u0442 \u0435\u0433\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0441\u043b\u0435 \u0443\u0442\u0435\u0447\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 <\/p>\n<p>\u0427\u0435\u043a\u043b\u0438\u0441\u0442 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432:<\/p>\n<p>1.\u00a0\u00a0\u00a0 \u0412\u0441\u0435 URL-\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 allow-list \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044e<\/p>\n<p>2.\u00a0\u00a0\u00a0 \u0417\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043a \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u043c IP (10.0.0.0\/8, 192.168.0.0\/16)<\/p>\n<p>3.\u00a0\u00a0\u00a0 \u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d IDOR-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u043d\u044b\u0445 URL<\/p>\n<p>4.\u00a0\u00a0\u00a0 \u0412\u043d\u0435\u0434\u0440\u0435\u043d\u044b \u043b\u0438\u043c\u0438\u0442\u044b \u043d\u0430 \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u044b (max 2)<\/p>\n<p>\u041b\u044e\u0431\u043e\u0439 endpoint, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0449\u0438\u0439 URL \u2014 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u044b\u0440\u0430 \u0432 \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440\u0435.<\/p>\n<h2>API8: Security Misconfiguration<\/h2>\n<p>1. \u0422\u0438\u0445\u0438\u0439 \u0443\u0431\u0438\u0439\u0446\u0430 \u0432 \u0432\u0430\u0448\u0435\u043c \u0441\u0442\u0435\u043a\u0435: \u0421\u0443\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b\u00a0\u00a0<\/p>\n<p>\u0412 \u0431\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0437\u043b\u043e\u043c\u043e\u0432 \u0438\u0437-\u0437\u0430 \u0437\u0430\u0431\u044b\u0442\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u0447\u0435\u043c \u0438\u0437-\u0437\u0430 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442\u043e\u0432. Security Misconfiguration (OWASP API8) \u2014 \u044d\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u0430 \u0438\u0437-\u0437\u0430 \u043d\u0435\u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u044b\u0445 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a, \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438\u043b\u0438 \u043e\u0448\u0438\u0431\u043e\u043a \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0413\u0434\u0435 \u0438\u0441\u043a\u0430\u0442\u044c \u0431\u043e\u043c\u0431\u044b \u0437\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f?<\/p>\n<p>\u0421\u0442\u0435\u043a \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439: \u0421\u0435\u0440\u0432\u0435\u0440\u044b, \u0421\u0423\u0411\u0414, \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u044b<\/p>\n<p>\u041a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0442\u043e\u0447\u043a\u0438:<\/p>\n<p>1.\u00a0\u00a0\u00a0 \u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 HTTP \u0432\u043c\u0435\u0441\u0442\u043e HTTPS<\/p>\n<p>2.\u00a0\u00a0\u00a0 \u041f\u0440\u043e\u0434\u0430\u043a\u0448\u043d-\u043b\u043e\u0433\u0438 \u0441 debug-\u0440\u0435\u0436\u0438\u043c\u043e\u043c<\/p>\n<p>3.\u00a0\u00a0\u00a0 \u041f\u0443\u0431\u043b\u0438\u0447\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f Swagger\/Redoc<\/p>\n<p>4.\u00a0\u00a0\u00a0 CORS \u0441 Access-Control-Allow-Origin:<\/p>\n<p>5.\u00a0\u00a0\u00a0 \u041f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u0435 \u0441\u0435\u0441\u0441\u0438\u0438 (Base64 \u0431\u0435\u0437 \u043f\u043e\u0434\u043f\u0438\u0441\u0438)<\/p>\n<p>6.\u00a0\u00a0\u00a0 \u041b\u0438\u0447\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440: \u0412 2019 \u0433\u043e\u0434\u0443 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442 \/actuator\/health \u0445\u0430\u043a\u0435\u0440\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u044e \u0432\u0441\u0435\u0439 \u043d\u0430\u0448\u0435\u0439 \u0441\u0435\u0442\u0438.<\/p>\n<p>2. \u041a\u0430\u043a \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u0443\u044e\u0442 \u0434\u044b\u0440\u044b \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445: \u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0438\u0437 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438\u00a0\u00a0<\/p>\n<p>\u0420\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u0435\u0439\u0441\u0435 \u0438\u0437 \u0444\u0438\u043d\u0442\u0435\u0445\u0430, \u0433\u0434\u0435 misconfiguration \u043f\u0440\u0438\u0432\u0451\u043b \u043a \u0448\u0442\u0440\u0430\u0444\u0443 $2M \u043e\u0442 \u0440\u0435\u0433\u0443\u043b\u044f\u0442\u043e\u0440\u0430.\u00a0\u00a0<\/p>\n<p>\u0421\u0446\u0435\u043d\u0430\u0440\u0438\u0439: \u041a\u0440\u0430\u0436\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 HTTP + \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u0435 \u043a\u0443\u043a\u0438<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>http<\/strong><\/p>\n<p align=\"left\"><strong>\u00a0<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">GET  \/api\/v1\/transactions?user_id=10245 HTTP\/1.1<\/p>\n<p align=\"left\">Host:  <a href=\"http:\/\/bank.com\" rel=\"noopener noreferrer nofollow\">bank.com<\/a><\/p>\n<p align=\"left\">Cookie:  session=eyJ1c2VyIjogImFkbWluIn0K # Base64-\u0434\u0435\u043a\u043e\u0434\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432  {&#171;user&#187;: &#171;admin&#187;}<\/p>\n<p align=\"left\">\u00a0<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0423\u044f\u0437\u0432\u0438\u043c\u044b\u0439 \u043e\u0442\u0432\u0435\u0442:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong>http<\/strong><\/p>\n<p align=\"left\">\u00a0<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">HTTP\/1.1  200 OK<\/p>\n<p align=\"left\">Access-Control-Allow-Origin:  <\/p>\n<p align=\"left\">Content-Type:  application\/json<\/p>\n<p align=\"left\">[<\/p>\n<p align=\"left\">{&#171;id&#187;:  &#171;TX100&#187;, &#171;amount&#187;: 15000, &#171;account&#187;:  &#171;ATTACKER_IBAN&#187;},<\/p>\n<p align=\"left\">{&#171;id&#187;:  &#171;TX101&#187;, &#171;amount&#187;: 32000, &#171;account&#187;:  &#171;VIP_CLIENT_IBAN&#187;}<\/p>\n<p align=\"left\">]<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435: MITM-\u0430\u0442\u0430\u043a\u0430 \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c Wi-Fi \u2192 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 \u0441\u0435\u0441\u0441\u0438\u0439 5000 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432.<\/p>\n<p>\u0426\u0435\u043f\u043e\u0447\u043a\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0439:<\/p>\n<p>1. \u0423\u0442\u0435\u0447\u043a\u0430 PII \u0434\u0430\u043d\u043d\u044b\u0445 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u044b\u0439 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442<\/p>\n<p>2. \u0418\u043d\u044a\u0435\u043a\u0446\u0438\u044f \u0432 \u0421\u0423\u0411\u0414 \u0447\u0435\u0440\u0435\u0437 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u044b\u0439 H2 Console<\/p>\n<p>3. \u041f\u043e\u043b\u043d\u0430\u044f \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0430\u0446\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 Kubernetes<\/p>\n<p>4. \u0416\u0451\u0441\u0442\u043a\u0438\u0439 \u0445\u0430\u0440\u0434\u0435\u043d\u0438\u043d\u0433: \u041a\u043e\u043d\u0442\u0440\u043c\u0435\u0440\u044b \u0434\u043b\u044f \u043f\u0430\u0440\u0430\u043d\u043e\u0438\u043a\u043e\u0432<\/p>\n<p>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f:<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u0421\u0442\u0440\u043e\u0433\u0430\u044f \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f: \u041e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 VPC \u0434\u043b\u044f prod\/staging\/dev<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Immutable-\u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430: \u041f\u0435\u0440\u0435\u0441\u0431\u043e\u0440\u043a\u0430 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0439 \u043f\u0440\u0438 \u043b\u044e\u0431\u044b\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u0445 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#171;\u0422\u0451\u043c\u043d\u044b\u0435&#187; API: \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043d\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 IaC<\/p>\n<p>Middleware-\u0437\u0430\u0449\u0438\u0442\u0430:<\/p>\n<p>\u0415\u0434\u0438\u043d\u044b\u0439 security-gateway:<\/p>\n<p>\u041a\u043e\u043d\u0444\u0438\u0433 Nginx \u0434\u043b\u044f \u0431\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u0438\u0445 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u0432<\/p>\n<p>1.\u00a0\u00a0\u00a0 add_header Strict-Transport-Security &#171;max-age=63072000&#187; always;<\/p>\n<p>2.\u00a0\u00a0\u00a0 add_header X-Content-Type-Options &#171;nosniff&#187;;<\/p>\n<p>3.\u00a0\u00a0\u00a0 add_header Content-Security-Policy &#171;default-src &#8216;self'&#187;;<\/p>\n<p>4.\u00a0\u00a0\u00a0 add_header Access-Control-Allow-Origin &#171;<a href=\"http:\/\/trusted-domain.com\" rel=\"noopener noreferrer nofollow\">trusted-domain.com<\/a>&#171;;<\/p>\n<p>5.\u00a0\u00a0\u00a0 server_tokens off; # \u0423\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0435\u0440\u0441\u0438\u044e \u0441\u0435\u0440\u0432\u0435\u0440\u0430<\/p>\n<p>WAF \u0441 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u043c\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438: \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043a \/actuator\/, \/phpmyadmin, \/console<\/p>\n<p>Best practices \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438:<\/p>\n<p>1. HTTPS-only enforcement: HSTS-preload + 307 redirect<\/p>\n<p>2. Zero-trust CORS: \u0411\u0435\u043b\u044b\u0435 \u0441\u043f\u0438\u0441\u043a\u0438 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u0432\u043c\u0435\u0441\u0442\u043e <\/p>\n<p>3. \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0441\u0435\u0441\u0441\u0438\u0439:<\/p>\n<p>\u041f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435\/\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u0443\u043a\u0438 (SameSite=Strict)<\/p>\n<p>JWT \u0441 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u043c TTL (max 15 \u043c\u0438\u043d \u0434\u043b\u044f \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439)<\/p>\n<p>4. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f \u043f\u043e\u0434 \u0437\u0430\u043c\u043a\u043e\u043c:<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 Swagger \u0432 Spring<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 springdoc.swagger-ui.enabled=false<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 springdoc.api-docs.enabled=false<\/p>\n<p>5. Secret-\u043c\u0435\u043d\u0435\u0434\u0436\u043c\u0435\u043d\u0442: \u0420\u043e\u0442\u0430\u0446\u0438\u044f \u043a\u043b\u044e\u0447\u0435\u0439 \u0447\u0435\u0440\u0435\u0437 HashiCorp Vault<\/p>\n<p>\u0427\u0435\u043a\u043b\u0438\u0441\u0442 \u0434\u043b\u044f \u044d\u043a\u0441\u0442\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0430\u0443\u0434\u0438\u0442\u0430:<\/p>\n<p>1.\u00a0\u00a0\u00a0 \u0412\u0441\u0435 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u044b (config-as-code)<\/p>\n<p>2.\u00a0\u00a0\u00a0 Debug-\u0440\u0435\u0436\u0438\u043c \u043e\u0442\u043a\u043b\u044e\u0447\u0451\u043d \u0432 prod (\u0443\u0431\u0435\u0440\u0438\u0442\u0435 ?debug=true)<\/p>\n<p>3.\u00a0\u00a0\u00a0 \u041d\u0435\u0442 \u0434\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0445 \u0443\u0447\u0451\u0442\u043e\u043a admin\/admin<\/p>\n<p>4.\u00a0\u00a0\u00a0 \u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u044b (XSS, HSTS, CSP)<\/p>\n<p>5.\u00a0\u00a0\u00a0 \u041f\u0430\u0440\u043e\u043b\u0438 \u0445\u0435\u0448\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0441 \u0441\u043e\u043b\u044c\u044e (bcrypt\/scrypt)<\/p>\n<p>\u041f\u043e\u043c\u043d\u0438\u0442\u0435 \u043c\u043e\u0451 \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u043a\u0430\u043a CISO: \u0414\u0435\u0444\u043e\u043b\u0442\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b \u0440\u043e\u0432\u043d\u043e \u0434\u043e \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u044b<\/p>\n<h2>API9: Improper Inventory Management<\/h2>\n<p>\u0423\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c API9: \u041a\u043e\u0433\u0434\u0430 \u0437\u0430\u0431\u044b\u0442\u044b\u0435 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0432\u0440\u0430\u0442\u0430\u043c\u0438 \u0434\u043b\u044f \u0445\u0430\u043a\u0435\u0440\u043e\u0432<\/p>\n<p>1. \u0421\u043b\u0435\u043f\u044b\u0435 \u0437\u043e\u043d\u044b API: \u041f\u043e\u0447\u0435\u043c\u0443 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u0438\u0437\u0430\u0446\u0438\u044f \u2014 \u0432\u0430\u0448\u0430 \u043f\u0435\u0440\u0432\u0430\u044f \u043b\u0438\u043d\u0438\u044f \u043e\u0431\u043e\u0440\u043e\u043d\u044b<\/p>\n<p>\u0411\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u0431\u044b\u0442\u044b\u0435 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u0432\u0437\u0440\u044b\u0432\u0430\u044e\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. Improper Inventory Management (API9) \u2014 \u044d\u0442\u043e \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u043e\u0431\u0435\u043b \u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435 \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 API. \u0411\u0435\u0437 \u0447\u0451\u0442\u043a\u043e\u0433\u043e \u0443\u0447\u0451\u0442\u0430:<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u0422\u0435\u0440\u044f\u0435\u0442\u0441\u044f \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u0441\u0435\u0445 \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u0445 \u0442\u043e\u0447\u0435\u043a<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u0420\u0430\u0441\u0442\u0451\u0442 \u043f\u043e\u0432\u0435\u0440\u0445\u043d\u043e\u0441\u0442\u044c \u0430\u0442\u0430\u043a\u0438 \u0438\u0437-\u0437\u0430 &#171;\u0442\u0435\u043d\u0435\u0432\u044b\u0445&#187; API<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u0421\u0442\u0430\u0440\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 dev-\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c\u0438<\/p>\n<p>2. \u0422\u0438\u043f\u0438\u0447\u043d\u044b\u0439 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0439 \u0432\u0437\u043b\u043e\u043c\u0430: \u0422\u0440\u0438 \u0448\u0430\u0433\u0430 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u0431\u044b\u0442\u044b\u0439 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442<\/p>\n<p>\u0420\u0435\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u0438\u0440\u0443\u044e \u0430\u0442\u0430\u043a\u0443:<\/p>\n<p>\u0428\u0430\u0433 1: \u0417\u0430\u043f\u0440\u043e\u0441 \u0441\u0431\u0440\u043e\u0441\u0430 \u043f\u0430\u0440\u043e\u043b\u044f \u0447\u0435\u0440\u0435\u0437 \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e (v2)<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/145\/b63\/2d6\/145b632d61be1426adb2f1723b307777.png\" width=\"624\" height=\"192\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/145\/b63\/2d6\/145b632d61be1426adb2f1723b307777.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/145\/b63\/2d6\/145b632d61be1426adb2f1723b307777.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0428\u0430\u0433 2: \u041e\u0431\u0445\u043e\u0434 \u0437\u0430\u0449\u0438\u0442\u044b \u0447\u0435\u0440\u0435\u0437 \u0441\u0442\u0430\u0440\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e (v1)<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7da\/885\/666\/7da8856667af744724b43fb614fd7313.png\" width=\"624\" height=\"167\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/7da\/885\/666\/7da8856667af744724b43fb614fd7313.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/7da\/885\/666\/7da8856667af744724b43fb614fd7313.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0428\u0430\u0433 3: \u041a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0430\u0446\u0438\u044f \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f66\/a4c\/8f0\/f66a4c8f02c181c60161d422fd016c29.png\" width=\"624\" height=\"182\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/f66\/a4c\/8f0\/f66a4c8f02c181c60161d422fd016c29.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/f66\/a4c\/8f0\/f66a4c8f02c181c60161d422fd016c29.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: \u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430\u0434 \u0443\u0447\u0451\u0442\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u044c\u044e \u0447\u0435\u0440\u0435\u0437 deprecated-\u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b.<\/p>\n<p>3. \u041a\u043e\u043d\u0442\u0440\u043c\u0435\u0440\u044b: \u041a\u0430\u043a \u0437\u0430\u043a\u0440\u044b\u0442\u044c \u0431\u0440\u0435\u0448\u0438 \u0443\u0447\u0451\u0442\u0430<\/p>\n<p>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f:<\/p>\n<p>1.\u00a0\u00a0\u00a0 \u041f\u043e\u043b\u043d\u044b\u0439 \u0438\u043d\u0432\u0435\u043d\u0442\u0430\u0440\u044c API \u0428\u043b\u044e\u0437 \u0434\u043b\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438<\/p>\n<p>2.\u00a0\u00a0\u00a0 \u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/p>\n<p>3.\u00a0\u00a0\u00a0 \u0421\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043d\u0435\u0432\u044b\u0445 API<\/p>\n<p>4.\u00a0\u00a0\u00a0 \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 non-prod \u0441\u0440\u0435\u0434<\/p>\n<p>\u0422\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0435\u0440\u044b:<\/p>\n<p>1.\u00a0\u00a0\u00a0 \u0412\u0435\u0434\u0438\u0442\u0435 \u0440\u0435\u0435\u0441\u0442\u0440 API: \u0424\u0438\u043a\u0441\u0438\u0440\u0443\u0439\u0442\u0435 \u0432\u0441\u0435 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b (\u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d, \u0442\u0435\u0441\u0442, \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435)<\/p>\n<p>2.\u00a0\u00a0\u00a0 \u0426\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u0443\u0439\u0442\u0435 \u0447\u0435\u0440\u0435\u0437 API-\u0448\u043b\u044e\u0437: \u0415\u0434\u0438\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0442\u0440\u0430\u0444\u0438\u043a\u0430<\/p>\n<p>3.\u00a0\u00a0\u00a0 \u0427\u0451\u0442\u043a\u043e\u0435 \u0432\u0435\u0440\u0441\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435: \u041f\u043e\u043c\u0435\u0447\u0430\u0439\u0442\u0435 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0439\u0442\u0435 \u0438\u0445 \u043f\u043e \u0433\u0440\u0430\u0444\u0438\u043a\u0443<\/p>\n<p>4.\u00a0\u00a0\u00a0 \u0420\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435: \u041f\u043e\u0438\u0441\u043a \u0437\u0430\u0431\u044b\u0442\u044b\u0445 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u043e\u0432 \u0432 \u0441\u0435\u0442\u0438\u00a0\u00a0<\/p>\n<p>5.\u00a0\u00a0\u00a0 \u0418\u0437\u043e\u043b\u0438\u0440\u0443\u0439\u0442\u0435 non-prod: \u0417\u0430\u043f\u0440\u0435\u0442\u0438\u0442\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043a dev\/staging \u0438\u0437 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430<\/p>\n<p>6.\u00a0\u00a0\u00a0 \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u0443\u0439\u0442\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e: \u0415\u0434\u0438\u043d\u044b\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u043e\u043c\u0430\u043d\u0434<\/p>\n<p>7.\u00a0\u00a0\u00a0 \u041c\u0435\u0442\u043a\u0438 \u0434\u043b\u044f \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445: \u0412\u0435\u0440\u0441\u0438\u044f, \u0441\u0440\u0435\u0434\u0430, \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439, \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<p>8.\u00a0\u00a0\u00a0 \u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438: \u0410\u043b\u0451\u0440\u0442\u044b \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 deprecated-\u043f\u0443\u0442\u0435\u0439<\/p>\n<p>\u042d\u043a\u0441\u0442\u0440\u0435\u043d\u043d\u044b\u0439 \u0447\u0435\u043a\u043b\u0438\u0441\u0442:<\/p>\n<p>1.\u00a0\u00a0\u00a0 \u0412\u0441\u0435 \u043b\u0438 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b \u0437\u0430\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b?<\/p>\n<p>2.\u00a0\u00a0\u00a0 \u0415\u0441\u0442\u044c \u043b\u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a dev-\u0432\u0435\u0440\u0441\u0438\u044f\u043c \u0438\u0437\u0432\u043d\u0435?<\/p>\n<p>3.\u00a0\u00a0\u00a0 \u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043b\u0438 \u0441\u0442\u0430\u0440\u044b\u0435 \u043f\u0443\u0442\u0438 (\/v1, \/legacy)?<\/p>\n<p>4.\u00a0\u00a0\u00a0 \u0412\u0435\u0434\u0443\u0442\u0441\u044f \u043b\u0438 \u043b\u043e\u0433\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f deprecated-API?<\/p>\n<p>\u041d\u0435\u0443\u0447\u0442\u0451\u043d\u043d\u044b\u0439 API \u2014 \u044d\u0442\u043e \u043c\u0438\u043d\u0430 \u0437\u0430\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f<\/p>\n<h2>API10: Unsafe Consumption of APIs<\/h2>\n<p>\u0412 \u0431\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0434\u043e\u0432\u0435\u0440\u0438\u0435 \u043a \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u043c \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u043c \u0432\u0437\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438\u0437\u043d\u0443\u0442\u0440\u0438. Unsafe Consumption of APIs (API10) \u2014 \u044d\u0442\u043e \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0431\u0435\u0437\u043e\u0433\u043e\u0432\u043e\u0440\u043e\u0447\u043d\u043e\u0433\u043e \u0434\u043e\u0432\u0435\u0440\u0438\u044f \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0432\u043d\u0435\u0448\u043d\u0438\u0445 API \u0431\u0435\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438\u043b\u0438 \u0441\u0430\u043d\u0430\u0446\u0438\u0438. \u041a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435:\u00a0 <\/p>\n<p>1.\u00a0\u00a0\u00a0 \u0412\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441\u043d\u044b\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a \u0447\u0435\u0440\u0435\u0437 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0439\u00a0 <\/p>\n<p>2.\u00a0\u00a0\u00a0 \u042d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u0445\u00a0 <\/p>\n<p>3.\u00a0\u00a0\u00a0 \u041a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0438\u043d\u0446\u0438\u0434\u0435\u043d\u0442\u044b \u0438\u0437-\u0437\u0430 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432\u00a0 <\/p>\n<p>2. \u0426\u0435\u043f\u043d\u0430\u044f \u0440\u0435\u0430\u043a\u0446\u0438\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439: \u0422\u0440\u0438 \u0448\u0430\u0433\u0430 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438\u00a0 <\/p>\n<p>\u0428\u0430\u0433 1: \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441\u043d\u043e\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438<\/p>\n<p>\u0428\u0430\u0433 2: \u041e\u0431\u0445\u043e\u0434 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0447\u0435\u0440\u0435\u0437 \u0443\u044f\u0437\u0432\u0438\u043c\u044b\u0439 API<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6ef\/281\/6fb\/6ef2816fb4f6875e9c48e47bac410d93.png\" width=\"624\" height=\"254\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/6ef\/281\/6fb\/6ef2816fb4f6875e9c48e47bac410d93.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6ef\/281\/6fb\/6ef2816fb4f6875e9c48e47bac410d93.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438:<\/p>\n<p>1.\u00a0\u00a0\u00a0 \u0412\u043d\u0435\u0448\u043d\u0438\u0439 API<\/p>\n<p>2.\u00a0\u00a0\u00a0 \u0412\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u0441\u0445\u0435\u043c\u044b<\/p>\n<p>3.\u00a0\u00a0\u00a0 \u0421\u0430\u043d\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<p>4.\u00a0\u00a0\u00a0 HTTPS + OAuth<\/p>\n<p>5.\u00a0\u00a0\u00a0 \u041b\u0438\u043c\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/p>\n<p>6.\u00a0\u00a0\u00a0 \u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433<\/p>\n<p>\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"center\"><strong>\u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u041c\u0435\u0442\u043e\u0434 \u0437\u0430\u0449\u0438\u0442\u044b<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u041f\u0440\u0438\u043c\u0435\u0440\u044b\/\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0416\u0451\u0441\u0442\u043a\u0430\u044f  \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0442\u0438\u043f\u043e\u0432,  \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0438 \u0441\u0445\u0435\u043c \u0432\u0441\u0435\u0445 \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435  Joi\/JSON Schema \u0441 strict-\u0440\u0435\u0436\u0438\u043c\u043e\u043c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0410\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f  \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0412\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f  \u043b\u0435\u0433\u0438\u0442\u0438\u043c\u043d\u043e\u0441\u0442\u0438 API-\u0432\u044b\u0437\u043e\u0432\u043e\u0432<\/p>\n<\/td>\n<td>\n<p align=\"left\">OAuth 2.0,  API-\u043a\u043b\u044e\u0447\u0438 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c scope<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430  \u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0413\u043b\u0443\u0431\u043e\u043a\u0430\u044f  \u0441\u0430\u043d\u0430\u0446\u0438\u044f<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0447\u0438\u0441\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445  \u043e\u0442 \u043e\u043f\u0430\u0441\u043d\u044b\u0445 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u042d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435  HTML\/SQL, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u0433\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 DOMPurify<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430  \u043e\u0448\u0438\u0431\u043e\u043a<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0417\u0430\u0449\u0438\u0442\u0430  \u043e\u0448\u0438\u0431\u043e\u043a<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435  \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0431\u0435\u0437 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0435\u0442\u0430\u043b\u0435\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0431\u0449\u0438\u0435  \u0444\u0440\u0430\u0437\u044b: &#171;\u041e\u0448\u0438\u0431\u043a\u0430 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438&#187; \u0432\u043c\u0435\u0441\u0442\u043e &#171;\u041d\u0435\u0432\u0435\u0440\u043d\u044b\u0439 JWT-\u0442\u043e\u043a\u0435\u043d&#187;<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0417\u0430\u0449\u0438\u0442\u0430 \u043e\u0442  DoS<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041b\u0438\u043c\u0438\u0442\u044b  \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435  \u0447\u0430\u0441\u0442\u043e\u0442\u044b \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u0446\u0435\u043f\u043e\u0447\u0435\u043a API<\/p>\n<\/td>\n<td>\n<p align=\"left\">100  \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432\/\u043c\u0438\u043d\u0443\u0442\u0443 \u043d\u0430 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 endpoints<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435  API<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u044c  \u0432\u0435\u0440\u0441\u0438\u0439<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041e\u0442\u043a\u0430\u0437 \u043e\u0442  \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0445 API<\/p>\n<\/td>\n<td>\n<p align=\"left\">Deprecation-\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430  \u0441 6-\u043c\u0435\u0441\u044f\u0447\u043d\u044b\u043c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u043d\u044b\u043c \u043f\u0435\u0440\u0438\u043e\u0434\u043e\u043c<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041d\u0430\u0434\u0451\u0436\u043d\u043e\u0441\u0442\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0422\u0430\u0439\u043c\u0430\u0443\u0442\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435  \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0448\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432<\/p>\n<\/td>\n<td>\n<p align=\"left\">5s timeout  \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0445 API-\u0432\u044b\u0437\u043e\u0432\u043e\u0432, 30s \u0434\u043b\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0445<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0410\u043a\u0442\u0438\u0432\u043d\u044b\u0439  \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0410\u043d\u0430\u043b\u0438\u0437  \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u0439 \u0432 \u043e\u0442\u0432\u0435\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u00a0<\/p>\n<p>\u042d\u043a\u0441\u0442\u0440\u0435\u043d\u043d\u044b\u0439 \u0447\u0435\u043a\u043b\u0438\u0441\u0442:\u00a0 <\/p>\n<p>\u0412\u0441\u0435 \u043b\u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u044f\u0442 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044e?\u00a0 <\/p>\n<p>\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043b\u0438 \u0441\u0430\u043d\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0430\u0441\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439?\u00a0 <\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043b\u0438 HTTPS \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0439?\u00a0 <\/p>\n<p>\u0415\u0441\u0442\u044c \u043b\u0438 \u0442\u0430\u0439\u043c\u0430\u0443\u0442\u044b \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432?\u00a0 <\/p>\n<p>\u00a0<\/p>\n<p>\u0414\u043e\u0432\u0435\u0440\u044f\u0439, \u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439 \u2014 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u0440\u0435\u0447\u044c \u043e \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0445 API<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/931420\/\"> https:\/\/habr.com\/ru\/articles\/931420\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u043d\u0430\u0447\u0430\u0442\u044c \u0440\u0430\u0437\u0431\u043e\u0440 \u0442\u0435\u043c\u044b API TOP 10 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0435\u043c \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 API, \u0434\u043b\u044f \u0447\u0435\u0433\u043e \u0438 \u0441 \u0447\u0435\u043c \u0435\u0433\u043e \u0435\u0434\u044f\u0442. \u041d\u0430\u0447\u043d\u0435\u043c \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0434\u0430\u0435\u0442 \u043d\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442:<\/p>\n<p><strong>API (Application Programming Interface)<\/strong> \u2014 <strong>\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/strong>, \u043d\u0430\u0431\u043e\u0440 \u043f\u0440\u0430\u0432\u0438\u043b \u0438 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u0438 \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0430\u043d\u043d\u044b\u043c\u0438. API \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0440\u043e\u043b\u044c \u043f\u043e\u0441\u0440\u0435\u0434\u043d\u0438\u043a\u0430, \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u044f \u0434\u0430\u043d\u043d\u044b\u0435 \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0447\u0435\u0440\u0435\u0437 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441.<\/p>\n<p>\u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044b \u043f\u043e\u0439\u043c\u0443\u0442, \u043d\u043e \u043b\u044e\u0434\u0438 \u0431\u0435\u0437 \u043e\u043f\u044b\u0442\u0430, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0438 \u044f, \u043d\u0435 \u043e\u0441\u043e\u0437\u043d\u0430\u044e\u0442 \u0432\u0441\u044e \u043c\u044b\u0441\u043b\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u044f \u043e\u0441\u043c\u0435\u043b\u044e\u0441\u044c \u0432\u0437\u044f\u0442\u044c \u043d\u0430 \u0441\u0435\u0431\u044f \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0443 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432, \u0447\u0442\u043e \u0436\u0435 \u044d\u0442\u043e\u0442 \u0432\u0430\u0448 API?<\/p>\n<p>\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u043c, \u0447\u0442\u043e API (Application Programming Interface) \u2013 \u044d\u0442\u043e \u043a\u0430\u043a \u043e\u0444\u0438\u0446\u0438\u0430\u043d\u0442 \u0432 \u0440\u0435\u0441\u0442\u043e\u0440\u0430\u043d\u0435. \u0422\u044b (\u043a\u043b\u0438\u0435\u043d\u0442) \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0448\u044c \u0438 \u0434\u0435\u043b\u0430\u0435\u0448\u044c \u0437\u0430\u043a\u0430\u0437 \u043f\u043e \u043c\u0435\u043d\u044e. \u041e\u0444\u0438\u0446\u0438\u0430\u043d\u0442 (API) \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u0432\u043e\u0439 \u0437\u0430\u043a\u0430\u0437, \u043f\u0435\u0440\u0435\u0434\u0430\u0451\u0442 \u0435\u0433\u043e \u043d\u0430 \u043a\u0443\u0445\u043d\u044e (\u0441\u0435\u0440\u0432\u0438\u0441), \u0430 \u043f\u043e\u0442\u043e\u043c \u043f\u0440\u0438\u043d\u043e\u0441\u0438\u0442 \u0433\u043e\u0442\u043e\u0432\u043e\u0435 \u0431\u043b\u044e\u0434\u043e \u043e\u0431\u0440\u0430\u0442\u043d\u043e. \u0422\u044b \u043d\u0435 \u043b\u0430\u0437\u0430\u0435\u0448\u044c \u043d\u0430 \u043a\u0443\u0445\u043d\u044e \u0438 \u043d\u0435 \u0433\u043e\u0442\u043e\u0432\u0438\u0448\u044c \u0441\u0430\u043c \u2014 \u0442\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0437\u043d\u0430\u0435\u0448\u044c, \u0447\u0442\u043e \u0441\u043a\u0430\u0436\u0438 \u00ab\u0434\u0430\u0439 \u0441\u0442\u0435\u0439\u043a \u0441\u0440\u0435\u0434\u043d\u0435\u0439 \u043f\u0440\u043e\u0436\u0430\u0440\u043a\u0438\u00bb \u0438 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u0448\u044c \u0441\u0442\u0435\u0439\u043a.<\/p>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u0431\u044a\u044f\u0441\u043d\u044e \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435:<\/p>\n<h4>\u041f\u043e\u0433\u043e\u0434\u0430 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438<\/h4>\n<p><strong>\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e:<\/strong> \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u043d\u043e\u0437 \u043f\u043e\u0433\u043e\u0434\u044b \u0432 \u0442\u0432\u043e\u0451\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438.<\/p>\n<p><strong>\u0420\u0435\u0448\u0435\u043d\u0438\u0435:<\/strong> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u0435 Weather API (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, OpenWeatherMap).<\/p>\n<p><strong>\u041a\u0430\u043a \u044d\u0442\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442\u044c:<\/strong><\/p>\n<p>1.\u00a0\u00a0\u00a0 \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0448\u044c\u0441\u044f \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0448\u044c API\u2011\u043a\u043b\u044e\u0447.<\/p>\n<p>2.\u00a0\u00a0\u00a0 \u0414\u0435\u043b\u0430\u0435\u0448\u044c \u0437\u0430\u043f\u0440\u043e\u0441:<\/p>\n<p>GET <a href=\"https:\/\/api.openweathermap.org\/data\/2.5\/weather?q=Moscow&amp;appid=YOUR_KEY\" rel=\"noopener noreferrer nofollow\">https:\/\/api.openweathermap.org\/data\/2.5\/weather?q=Moscow&amp;appid=YOUR_KEY<\/a><\/p>\n<p>3.\u00a0\u00a0\u00a0 \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0448\u044c JSON\u2011\u043e\u0442\u0432\u0435\u0442 \u0441 \u0442\u0435\u043c\u043f\u0435\u0440\u0430\u0442\u0443\u0440\u043e\u0439, \u0432\u043b\u0430\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0438 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u0433\u043e\u0434\u044b<\/p>\n<p>\u041f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u043d\u0430\u0448\u0435\u0439 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0442\u0435\u043c\u0435. \u041f\u0440\u043e\u0432\u0435\u0434\u0435\u043c \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044e API \u0432 \u0432\u0435\u0431-\u0432\u0435\u0440\u0441\u0438\u0438 \u201cVulnerable Bank\u201d.<\/p>\n<h2>\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 <\/h2>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 reverse engineering API, \u0447\u0442\u043e\u0431\u044b \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u043d\u0430\u0448\u0443 \u0440\u0430\u0431\u043e\u0442\u0443 \u0432 Postman. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c .yaml \u0438 \u0432\u0441\u0442\u0430\u0432\u0438\u043c \u0432 swagger editor. (\u0441\u043c. \u0420\u0438\u0441\u0443\u043d\u043e\u043a 1)<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0448 \u0444\u0430\u0439\u043b \u0438\u0437 swagger, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 Postman.<\/p>\n<h2>API 1: Broken Object Level Authorization (BOLA)<\/h2>\n<p>Broken Object Level Authorization (BOLA) (\u0440\u0430\u043d\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430 \u043a\u0430\u043a Insecure Direct Object Reference (IDOR)) \u2014 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0432 API, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0430\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0430\u043d\u043d\u044b\u043c, \u0438\u0437\u043c\u0435\u043d\u044f\u044f \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435.<\/p>\n<p>\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0440\u0430\u0431\u043e\u0442\u044b<\/p>\n<p>\u0417\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0438 \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0438 \u043e\u0442\u0432\u0435\u0442\u044b API, \u0438\u0449\u0443\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0432 \u0442\u043e\u043c, \u043a\u0430\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \/users\/{userID} \u0438\u043b\u0438 \/orders\/{orderID}). \u0417\u0430\u0442\u0435\u043c \u043e\u043d\u0438 \u043c\u0435\u043d\u044f\u044e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u0441\u0432\u043e\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445, \u043f\u044b\u0442\u0430\u044f\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0430\u043d\u043d\u044b\u043c, \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0449\u0438\u043c \u0434\u0440\u0443\u0433\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0438\u043b\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c.<\/p>\n<p>\u042d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f:<\/p>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u0447\u043d\u0451\u043c \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f BOLA \u0438\u0437 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0438 API.<\/p>\n<p>\u00a0<\/p>\n<p>\u041a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e, \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c 2 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430, \u043a\u0430\u043a \u043c\u044b \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u0434\u043b\u044f IDOR. \u041d\u0430\u0437\u043e\u0432\u0435\u043c \u0438\u0445 Acount A \u0438 Account B \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u041d\u0430 Postman, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 \u0432\u0430\u0448 baseurl \u0432 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 <a href=\"http:\/\/localhost:5000\" rel=\"noopener noreferrer nofollow\">http:\/\/localhost:5000<\/a>. \u0412\u043e\u0439\u0434\u0438\u0442\u0435.<\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c ID \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u0438\u043b\u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u043d\u043e\u043c\u0435\u0440, \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c API\/transfer. \u041d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e \u0438\u0437 Account A \u0432 Account B, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435\u043f\u0443\u0441\u0442\u0443\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439. (\u0441\u043c. \u0420\u0438\u0441\u0443\u043d\u043e\u043a 2)<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u041d\u0430\u0448 \u0431\u0430\u043b\u0430\u043d\u0441 \u043e\u0431\u043d\u043e\u0432\u0438\u043b\u0441\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u043f\u0435\u0440\u0435\u0432\u0435\u043b\u0438 100$ \u043d\u0430 Account B. <\/p>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 Account A \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0439\u0442\u0438 \u0432 endpoint \/transaction Account B. (\u0441\u043c. \u0420\u0438\u0441\u0443\u043d\u043e\u043a 3, 4)<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 3 \u2013 \u0412\u0445\u043e\u0434 \u0432 Account B.<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 4 \u2013 \u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 Account A.<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430 \u0420\u0438\u0441\u0443\u043d\u043a\u0435 4 \u0437\u0430\u043c\u0435\u0442\u043d\u043e, \u0447\u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 API (BOLA), \u0442.\u043a. \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u043e\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 Account A \u0431\u0443\u0434\u0443\u0447\u0438 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u0434 Account B.<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c API \u043d\u0435 \u0432 \u0441\u0438\u043b\u0430\u0445 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430. \u041e\u043d \u0440\u0430\u0441\u0441\u0443\u0436\u0434\u0430\u043b, \u0447\u0442\u043e \u043b\u044e\u0431\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c \u043b\u044e\u0431\u043e\u0433\u043e \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d \u0438 \u0435\u0441\u043b\u0438 \u043e\u043d \u0437\u043d\u0430\u0435\u0442 \u0438\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0434\u0440\u0443\u0433\u043e\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430. <\/p>\n<p>\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f: \u0412\u0441\u0435\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u044f\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f<\/p>\n<p>1. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u0447\u0442\u043e ID \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c\u044b\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u043c<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438: \u0432 middleware \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c userId \u0438\u0437 JWT-\u0442\u043e\u043a\u0435\u043d\u0430 \u0438 \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u043c \u0435\u0433\u043e \u0441 accountId \u0432 URL:<\/p>\n<p>2. \u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u043e\u043b\u0430\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u0439 \u0432\u0432\u043e\u0434 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432 \u0434\u043e\u0441\u0442\u0443\u043f\u0430<\/p>\n<p>\u0412\u0441\u0435\u0433\u0434\u0430 \u0431\u0435\u0440\u0451\u043c userId \u0438\u0437 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 \u2014 JWT-\u0442\u043e\u043a\u0435\u043d\u0430 \u0438\u043b\u0438 \u0441\u0435\u0441\u0441\u0438\u0438, \u043d\u043e \u043d\u0435 \u0438\u0437 \u0442\u0435\u043b\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0438\u043b\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432:<\/p>\n<p>const userId = <a href=\"http:\/\/req.user.id\" rel=\"noopener noreferrer nofollow\">req.user.id<\/a>; \/\/ \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u043e\u043a\u0435\u043d\u0430<\/p>\n<p>3. \u0412\u043d\u0435\u0434\u0440\u0438\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e CRUD-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430<\/p>\n<p>\u00a0<\/p>\n<p>\u0418\u0442\u043e\u0433: \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0438 \u0441\u0442\u0440\u043e\u0433\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 userId \u2194 resourceId \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043c\u043e\u0436\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u0442 object-level authorization bypass.<\/p>\n<p>\u00a0<\/p>\n<h2>API2: Broken Authentication<\/h2>\n<p>Broken authentication \u2014 \u044d\u0442\u043e \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0441\u0435\u0441\u0441\u0438\u044f\u043c\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0435\u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0437\u0430\u0449\u0438\u0449\u0451\u043d\u043d\u044b\u043c \u0434\u0430\u043d\u043d\u044b\u043c \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c.<\/p>\n<p>\u0418\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u0441\u0431\u0440\u043e\u0441\u0430 \u043f\u0430\u0440\u043e\u043b\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c\u0441\u044f \u043a\u0430\u043a Account B \u0438 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f \u0434\u043b\u044f Account A (\u0441\u043c. \u0420\u0438\u0441\u0443\u043d\u043e\u043a 5).<\/p>\n<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 5 \u2013 \u041f\u0435\u0440\u0435\u0445\u0432\u0430\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043d\u0430 \u0441\u0431\u0440\u043e\u0441 \u043f\u0430\u0440\u043e\u043b\u044f. <\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0445 \u0440\u0435\u0430\u043b\u0438\u044f\u0445, flow \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u0442\u043e\u043a\u0435\u043d \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u043e\u043c\u0443 \u0436\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e, \u0447\u0435\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u0441\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u0438\u043b\u0438 \u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u043f\u043e\u0447\u0442\u0443 \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u0439 \u0442\u043e\u043a\u0435\u043d. \u041c\u044b \u0443\u0431\u0435\u0434\u0438\u043b\u0438\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u0440\u0435\u0430\u043b\u0438\u0438. <\/p>\n<p>\u041f\u043e\u0444\u0430\u0437\u0437\u0438\u043c PIN-\u043a\u043e\u0434.<\/p>\n<p>\u041f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043f\u043e\u043b\u0435 reset_pin \u0432\u0441\u0435 \u0442\u0440\u0435\u0445\u0437\u043d\u0430\u0447\u043d\u044b\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u043d\u0430\u0439\u0442\u0438 \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439.<\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443: <\/p>\n<p>1)\u00a0\u00a0\u00a0 wfuzz -d \u2018{\u201cusername\u201d:\u201dtest\u201d, \u201creset_pin\u201d:\u201dFUZZ\u201d, \u201cnew_password\u201d:\u201d reset@021\u201d}\u2019 -H \u2018Content-type: application\/json\u2019 -z file,\/usr\/share\/wordlists\/wfuzz\/digits-000-999.txt -u <a href=\"http:\/\/127.0.0.1:5000\/api\/v2\/reset-password\" rel=\"noopener noreferrer nofollow\">http:\/\/127.0.0.1:5000\/api\/v2\/reset-password<\/a> \u2013hc 400 <\/p>\n<p>2)\u00a0\u00a0\u00a0 \u041b\u0438\u0431\u043e BurpSuite<\/p>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442: \u0432\u0445\u043e\u0434\u0438\u043c \u0432 Account A \u0441 \u043d\u043e\u0432\u044b\u043c \u043f\u0430\u0440\u043e\u043b\u0435\u043c. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 \u0442\u043e\u043a\u0435\u043d \u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043d\u0430 \u0423\u0417. <\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 6 \u2013 \u0412\u0445\u043e\u0434 \u043f\u043e\u0441\u043b\u0435 \u0441\u0431\u0440\u043e\u0441\u0430 \u043f\u0430\u0440\u043e\u043b\u044f.<\/figcaption><\/div>\n<\/figure>\n<p>Fix:<\/p>\n<p>1)\u00a0\u00a0\u00a0 \u0412\u0441\u0435\u0433\u0434\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0439\u0442\u0435, \u0447\u0442\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 (\u0441\u0431\u0440\u043e\u0441, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0444\u0438\u043b\u044f \u0438 \u0442.\u043f.) \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0441\u0430\u043c\u0438\u043c \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0435\u043c \u0443\u0447\u0435\u0442\u043a\u0438 \u0438\u043b\u0438 \u043f\u043e email \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044e.<\/p>\n<p>2)\u00a0\u00a0\u00a0 \u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0439\u0442\u0435 \u0432 \u043e\u0434\u043d\u043e\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u0435 email + \u043d\u043e\u0432\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u0431\u0435\u0437 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 email-\u0432\u0435\u0440\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438.<\/p>\n<p>3)\u00a0\u00a0\u00a0 \u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0439\u0442\u0435 \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0432\u0432\u043e\u0434\u0430 PIN\/\u043a\u043e\u0434\u043e\u0432 \u0438 \u043b\u043e\u0433\u0438\u0440\u0443\u0439\u0442\u0435 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u0444\u0443\u0437\u0437\u0438\u043d\u0433.<\/p>\n<h2>API3: BOPLA (Broken Object Property Level Authorization)<\/h2>\n<p>Broken Object Property Level Authorization (BOPLA) &#8212; \u043c\u0435\u043d\u0435\u0435 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f, \u043d\u043e \u043e\u043f\u0430\u0441\u043d\u0430\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c API, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u043f\u043e\u043b\u044f \u0438\u043b\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043d\u0438 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0438\u043c \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0430\u043c\u043e\u043c\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0443.<\/p>\n<p>\u0414\u0432\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 BOPLA:<\/p>\n<p>\u0427\u0440\u0435\u0437\u043c\u0435\u0440\u043d\u043e\u0435 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<p>\u042d\u0442\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 API \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043a\u043b\u0438\u0435\u043d\u0442\u0443 \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0430\u043d\u043d\u044b\u0445, \u0447\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e. \u041e\u0431\u044b\u0447\u043d\u043e API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0435\u0433\u043e \u0437\u0430\u0434\u0430\u0447\u0438. \u041e\u0434\u043d\u0430\u043a\u043e, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0447\u0440\u0435\u0437\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445, API \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u0442\u0430\u043a\u0443\u044e \u043a\u0430\u043a: <\/p>\n<p><em>Admin status (is_admin: true)<\/em><\/p>\n<p>\u00a0\u041c\u0430\u0441\u0441\u043e\u0432\u043e\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/p>\n<p>\u041c\u0430\u0441\u0441\u043e\u0432\u043e\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 &#8212; \u044d\u0442\u043e \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442, \u043a\u043e\u0433\u0434\u0430 API \u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0434\u0430\u043d\u043d\u044b\u0435, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0435 \u0441 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b. \u0412 \u0442\u0438\u043f\u0438\u0447\u043d\u043e\u043c API, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u043c\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u044f \u043f\u043e\u0447\u0442\u0430 \u0438\u043b\u0438 \u043f\u0430\u0440\u043e\u043b\u044c). \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438 \u043c\u0430\u0441\u0441\u043e\u0432\u043e\u043c \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0438 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p>\u0417\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u0430\u043a \u0431\u0430\u043b\u0430\u043d\u0441, is_admin \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043e\u043d \u043d\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430.<\/p>\n<p>\u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c (Mass Assignment) \u0434\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u0435\u0441\u0441\u0438\u0438 \u0432 \u0433\u043b\u0430\u0432\u0435 API6.<\/p>\n<p>\u042d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f:<\/p>\n<p>\u0418\u0434\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0435 \u043f\u043e\u043b\u0435 (Excessive Data Exposure).<\/p>\n<p>\u041f\u0440\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f API \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u0449\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u043f\u043e\u043b\u044f, \u043d\u043e \u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 is_admin (\u0441\u043c \u0420\u0438\u0441\u0443\u043d\u043e\u043a 7).<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 8 \u2013 \u0423\u044f\u0437\u0432\u0438\u043c\u043e\u0435 \u043f\u043e\u043b\u0435 is_admin.<\/figcaption><\/div>\n<\/figure>\n<p>\u0417\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (Account C) \u0438 \u0434\u0430\u0434\u0438\u043c \u0435\u043c\u0443 \u043f\u0440\u0430\u0432\u0430 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. \u041c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e, \u0432\u0432\u0435\u0434\u044f is_admin: true \u0432 \u043a\u043e\u043d\u0435\u0447\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443 API (\u0441\u043c. \u0420\u0438\u0441\u0443\u043d\u043e\u043a 8).<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 8 \u2013 \u042d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044f Mass Assignment \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u0430\u0432 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430. <\/figcaption><\/div>\n<\/figure>\n<p>\u0412 \u0432\u0435\u0431 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435 \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u043f\u0443\u043d\u043a\u0442, Admin Panel, \u0433\u0434\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c\/\u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0431\u0430\u043b\u0430\u043d\u0441\u043e\u043c (\u0441\u043c. \u0420\u0438\u0441\u0443\u043d\u043e\u043a 9).<\/p>\n<figure class=\"full-width\">\n<div><figcaption>\u0420\u0438\u0441\u0443\u043d\u043e\u043a 9 \u2013 \u041f\u0430\u043d\u0435\u043b\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u043e\u0441\u043b\u0435 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 Mass Assignment.<\/figcaption><\/div>\n<\/figure>\n<p>Excessive Data Exposure \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0430 \u0443\u0437\u043d\u0430\u0442\u044c \u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u043b\u044f is_admin. Mass Assignment \u2014 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u0435\u0439 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0434\u0430\u043b\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0435\u0440\u0435\u0434\u0430\u0442\u044c \u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c is_admin: true. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043d\u043e\u0432\u044b\u0439 \u0430\u043a\u043a\u0430\u0443\u043d\u0442 \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043f\u043e\u043b\u043d\u044b\u0439 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c.<\/p>\n<p>Fix: \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0430\u0446\u0438\u0438 \u043f\u043e \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044e BOPLA<\/p>\n<p>1. Whitelist \u043f\u043e\u043b\u0435\u0439: \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u044f\u0432\u043d\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b (username, email, password) \u0438 \u043e\u0442\u0431\u0440\u043e\u0441\u0438\u0442\u044c \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435.<\/p>\n<p>2. \u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0432\u0430\u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0435 \u043f\u043e\u043b\u044f: \u043b\u044e\u0431\u044b\u0435 \u043f\u043e\u043b\u044f \u0432\u043d\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443.<\/p>\n<p>3. \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u00ab\u0447\u0443\u0432\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438\u00bb \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435: \u0444\u043b\u0430\u0433\u0438 is_admin, role, balance \u0438 \u0442.\u2009\u043f. \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0431\u0438\u0437\u043d\u0435\u0441-\u043b\u043e\u0433\u0438\u043a\u043e\u0439, \u0430 \u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u0438\u043c \u0432\u0432\u043e\u0434\u043e\u043c.<\/p>\n<p>4. \u041b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433: \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043f\u044b\u0442\u043a\u0438 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u0438 \u043e\u043f\u043e\u0432\u0435\u0449\u0430\u0442\u044c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u043e \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438.<\/p>\n<h2>API4: Unrestricted Resource Consumption<\/h2>\n<p>Unrestricted Resource Consumption \u2014 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 API \u043d\u0435 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 (\u0447\u0438\u0441\u043b\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043e\u0431\u044a\u0451\u043c \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u0440\u0435\u043c\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439 \u0438 \u0442.\u043f.). \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0430\u043c \u0438\u043b\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0438\u0441\u0447\u0435\u0440\u043f\u0430\u0442\u044c CPU, \u043f\u0430\u043c\u044f\u0442\u044c, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0441\u0435\u0442\u0438 \u0438\u043b\u0438 \u043d\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e, \u0447\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441 \u0443\u043f\u0430\u0434\u0451\u0442 \u0438\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e \u0434\u0435\u0433\u0440\u0430\u0434\u0438\u0440\u043e\u0432\u0430\u0442\u044c (DoS).<\/p>\n<p>\u042d\u0442\u0430\u043f 1. \u041f\u043e\u0438\u0441\u043a \u00ab\u0433\u043e\u0440\u044f\u0447\u0438\u0445\u00bb \u0442\u043e\u0447\u0435\u043a API<\/p>\n<p>1. \u0410\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0432\u0441\u0435 \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0442\u044f\u0436\u0451\u043b\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438:<\/p>\n<p>\u041b\u043e\u0433\u0438\u043d\/\u0444\u043e\u0437\u0433\u043e\u0442\u044b \u043f\u0430\u0440\u043e\u043b\u044f (\u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u044e\u0442 email, \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442 SMS)<\/p>\n<p>\u0417\u0430\u043f\u0440\u043e\u0441\u044b \u0441 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0432\u044b\u0431\u043e\u0440\u043a\u0430\u043c\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0430 \u043b\u043e\u0433\u043e\u0432, \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439)<\/p>\n<p>CRUD-\u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u043d\u0430\u0431\u043e\u0440\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440<\/p>\n<p>\u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442: GET \/api\/v4\/transactions?start=0&amp;limit=10000<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0432\u0430\u0436\u043d\u043e: \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043b\u0438\u043c\u0438\u0442\u0430 limit \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0438 \u0441\u043e\u0442\u043d\u0438 \u0442\u044b\u0441\u044f\u0447 \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0437\u0430 \u043e\u0434\u0438\u043d \u0432\u044b\u0437\u043e\u0432.<\/p>\n<p>\u042d\u0442\u0430\u043f 2. \u0417\u0430\u043f\u0443\u0441\u043a \u0430\u0442\u0430\u043a\u0438 \u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435 \u0437\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438<\/p>\n<p>\u0421\u0435\u0440\u0432\u0435\u0440 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043a \u0442\u044f\u0436\u0451\u043b\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432:<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0432\u044b\u0431\u043e\u0440\u043a\u0438 \u0438\u0437 \u0411\u0414<\/p>\n<p>\u00b7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 JSON-\u043e\u0442\u0432\u0435\u0442\u043e\u0432<\/p>\n<p>\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u043f\u043e\u043a\u0430\u0436\u0435\u0442 \u043f\u0438\u043a CPU, \u0440\u043e\u0441\u0442 \u0437\u0430\u0434\u0435\u0440\u0436\u0435\u043a \u0438 \u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>\u042d\u0442\u0430\u043f 3. \u042d\u0441\u043a\u0430\u043b\u0430\u0446\u0438\u044f \u2014 \u043e\u0442\u043a\u0430\u0437 \u0432 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0438 (DoS)<\/p>\n<p>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-468778","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/468778","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=468778"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/468778\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=468778"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=468778"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=468778"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}