{"id":35532,"date":"2019-10-31T22:04:52","date_gmt":"2019-10-31T19:04:52","guid":{"rendered":"https:\/\/prohoster.info\/blog\/bezopasnye-push-uvedomleniya-ot-teorii-k-praktike\/"},"modified":"2019-10-31T22:04:52","modified_gmt":"2019-10-31T19:04:52","slug":"bezopasnye-push-uvedomleniya-ot-teorii-k-praktike","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/bezopasnye-push-uvedomleniya-ot-teorii-k-praktike","title":{"rendered":"Bezpe\u010dn\u00e9 push notifikace: od teorie k praxi","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ahoj, Habr! <\/p>\n<p>Dnes v\u00e1m pov\u00edm o tom, \u010demu se s kolegy v\u011bnujeme u\u017e n\u011bkolik m\u011bs\u00edc\u016f: o push notifikac\u00edch pro mobiln\u00ed messenger. Jak u\u017e jsem zm\u00ednil, v na\u0161\u00ed aplikaci je kladen d\u016fraz na bezpe\u010dnost. Proto jsme zji\u0161\u0165ovali, zda maj\u00ed push notifikace n\u011bjak\u00e9 \u201eslab\u00e9 str\u00e1nky\u201c, a pokud ano, jak je m\u016f\u017eeme eliminovat, abychom tuto u\u017eite\u010dnou funkci mohli p\u0159idat do na\u0161eho servisu.<\/p>\n<p>Publikuji p\u0159eklad na\u0161eho <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/adamant-im\/push-notifications-friends-or-foes-b118b67ed258?postPublishedType=repub\">\u010dl\u00e1nku z Medium<\/a><\/noindex> s drobn\u00fdmi p\u0159\u00eddavky od sebe. Obsahuje z\u00e1v\u011bry z na\u0161eho \u201evy\u0161et\u0159ov\u00e1n\u00ed\u201c a popis, jak jsme vy\u0159e\u0161ili probl\u00e9m.<\/p>\n<h2>Zkoum\u00e1me technick\u00e9 z\u00e1klady<\/h2>\n<p>\nV klasick\u00e9m modelu push notifikac\u00ed se messengery st\u00e1vaj\u00ed zraniteln\u00fdmi v\u016f\u010di \u00fatok\u016fm MITM (Man-in-the-middle, \u201e\u010clov\u011bk uprost\u0159ed\u201c). Nap\u0159\u00edklad u Googlu, Microsoftu a ve star\u00e9 verzi iMessage aplikace pos\u00edl\u00e1 \u0161ifrovac\u00ed kl\u00ed\u010de na servery Apple \u2014 na serveru doch\u00e1z\u00ed k autentizaci u\u017eivatel\u016f a de\u0161ifrov\u00e1n\u00ed hlavi\u010dky zpr\u00e1vy (nebo jej\u00edho obsahu).<\/p>\n<p><img decoding=\"async\" alt=\"Bezpe\u010dn\u00e9 push notifikace: od teorie k praxi\" src=\"\/wp-content\/uploads\/2019\/06\/5a1d3de5fc9c7d6da3f48490dccd2ab6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV d\u016fsledku toho existuje \u0161ance p\u0159e\u010d\u00edst si konverzaci, pokud z\u00edsk\u00e1te p\u0159\u00edstup k serveru push notifikac\u00ed. To znamen\u00e1, \u017ee jak\u00e9koli \u0161ifrov\u00e1n\u00ed konverzace je zbyte\u010dn\u00e9: push notifikace i tak ponech\u00e1vaj\u00ed mo\u017enost pro \u010dten\u00ed t\u0159et\u00edmi stranami. Tuto mo\u017enost podrobn\u011bji prob\u00edrali auto\u0159i \u010dl\u00e1nku <noindex><a rel=\"nofollow\" href=\"https:\/\/xakep.ru\/2018\/06\/14\/useless-encryption\/\">\u201e\u0160ifruj se spr\u00e1vn\u011b\u201c<\/a><\/noindex> na Xaker.ru, kter\u00fd je v\u011bnov\u00e1n zp\u016fsob\u016fm \u0161ifrov\u00e1n\u00ed zpr\u00e1v. <\/p>\n<p>Pokud m\u00e1te pocit, \u017ee servery Apple a Google 100% zajist\u00ed, \u017ee nedojde k \u00faniku \u0161ifrovac\u00edch kl\u00ed\u010d\u016f u\u017eivatel\u016f, zamyslete se nad t\u00edm, \u017ee k nim maj\u00ed p\u0159\u00edstup jejich zam\u011bstnanci. A zam\u011bstnanci jsou lid\u00e9.<br \/>\nNavzdory v\u0161em zranitelnostem push notifikac\u00ed mnoho \u201ebezpe\u010dn\u00fdch\u201c messenger\u016f, v\u010detn\u011b Signal a Telegram, je pou\u017e\u00edv\u00e1. Jinak by u\u017eivatel\u00e9 museli \u201eru\u010dn\u011b\u201c sledovat nov\u00e9 zpr\u00e1vy, neust\u00e1le otev\u00edrat aplikaci. Co\u017e je velmi nepohodln\u00e9 a konkuren\u010dn\u00ed messengery by z\u00edskaly v\u00fdhodu.<\/p>\n<h2>Paranoia a zdrav\u00fd rozum<\/h2>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nV na\u0161em projektu se t\u00edmto probl\u00e9mem intenzivn\u011b zab\u00fdv\u00e1me u\u017e n\u011bkolik m\u011bs\u00edc\u016f. Pot\u0159ebovali jsme vytvo\u0159it mo\u017enost push notifikac\u00ed, abychom byli konkurenceschopn\u00ed. Ale z\u00e1rove\u0148 jsme necht\u011bli ud\u011blat d\u00edru do bezpe\u010dnosti, proto\u017ee jak\u00fdkoli \u00fanik dat podkope d\u016fv\u011bru v projekt.<\/p>\n<p>Na\u0161e aplikace m\u00e1 v\u0161ak ji\u017e jednu d\u016fle\u017eitou v\u00fdhodu: je decentralizovan\u00e1 (data jsou ulo\u017eena v blockchainu) a zam\u011bstnanci nemaj\u00ed p\u0159\u00edstup k \u00fa\u010dt\u016fm. \u0160ifrovac\u00ed kl\u00ed\u010de maj\u00ed pouze u\u017eivatel\u00e9, zat\u00edmco ve\u0159ejn\u00e9 kl\u00ed\u010de konverzac\u00ed jsou dostupn\u00e9 v blockchainu, aby byla chr\u00e1n\u011bna p\u0159ed \u00fatoky typu MITM.<\/p>\n<p>V prvn\u00ed verzi notifikac\u00ed jsme se rozhodli maxim\u00e1ln\u011b pojistit a v\u016fbec nep\u0159ed\u00e1vat text zpr\u00e1vy. Push slu\u017eba dost\u00e1vala od uzlu pouze sign\u00e1l ohledn\u011b p\u0159ijet\u00ed zpr\u00e1vy, nikoli samotn\u00fd text. U\u017eivatel tak vid\u011bl ozn\u00e1men\u00ed \"P\u0159ijata nov\u00e1 zpr\u00e1va\". P\u0159e\u010d\u00edst si ji bylo mo\u017en\u00e9 pouze v messengeru. <\/p>\n<p><img decoding=\"async\" alt=\"Bezpe\u010dn\u00e9 push notifikace: od teorie k praxi\" src=\"\/wp-content\/uploads\/2019\/06\/5f4bf5861141666105cd5c76c27c796c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?time_continue=21&amp;v=WK3gyH7_iAw\">Jak to fungovalo: video<\/a><\/noindex>.<\/p>\n<p>Pot\u00e9 jsme se dozv\u011bd\u011bli, \u017ee v posledn\u00ed verzi notifikac\u00ed od Apple jsou nov\u00e9 bezpe\u010dnostn\u00ed prvky. Ty <noindex><a rel=\"nofollow\" href=\"https:\/\/developer.apple.com\/documentation\/usernotifications\/unnotificationserviceextension\">vydal<\/a><\/noindex> UNNotificationServiceExtension, kter\u00fd umo\u017e\u0148uje v\u00fdvoj\u00e1\u0159\u016fm pos\u00edlat zcela \u0161ifrovan\u00e1 data notifikac\u00ed p\u0159es APNS. Aplikace na za\u0159\u00edzen\u00ed koncov\u00e9ho u\u017eivatele pak prov\u00e1d\u00ed de\u0161ifrov\u00e1n\u00ed (nebo na\u010d\u00edt\u00e1 dal\u0161\u00ed data) a zobrazuje notifikaci. Tuto funkci jsme vzali jako z\u00e1klad pro druhou verzi notifikac\u00ed.<\/p>\n<p>Nyn\u00ed jsme vyvinuli druhou verzi push notifikac\u00ed pro iOS, kter\u00e1 umo\u017e\u0148uje zobrazit text zpr\u00e1vy bez ohro\u017een\u00ed bezpe\u010dnosti. Nov\u00e1 logika konceptu vypad\u00e1 takto:<\/p>\n<ul>\n<li>Push slu\u017eba pos\u00edl\u00e1 push notifikaci s \u010d\u00edslem transakce (\u0161ifrovan\u00e1 zpr\u00e1va m\u016f\u017ee b\u00fdt velmi velk\u00e1 a velikost notifikac\u00ed je zna\u010dn\u011b omezena)<\/li>\n<li>Za\u0159\u00edzen\u00ed po p\u0159ijet\u00ed notifikace spou\u0161t\u00ed n\u00e1\u0161 NotificationServiceExtension \u2014 mikroaplikaci, kter\u00e1 \u017e\u00e1d\u00e1 u uzlu o transakci podle id, de\u0161ifruje pomoc\u00ed ulo\u017een\u00e9 fr\u00e1ze a pos\u00edl\u00e1 syst\u00e9mu novou notifikaci. Fr\u00e1ze je uchov\u00e1na v zabezpe\u010den\u00e9m \u00falo\u017ei\u0161ti.<\/li>\n<li>Syst\u00e9m zobrazuje notifikaci s de\u0161ifrovanou zpr\u00e1vou nebo p\u0159ekladem.<\/li>\n<li>Kl\u00ed\u010de nikam neodch\u00e1z\u00ed, stejn\u011b jako plain text zpr\u00e1va. Push slu\u017eba nem\u00e1 mo\u017enost de\u0161ifrovat zpr\u00e1vu. <\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Bezpe\u010dn\u00e9 push notifikace: od teorie k praxi\" src=\"\/wp-content\/uploads\/2019\/06\/9b137036738a742c93e5b97a2f0acea5.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTuto verzi jsme schv\u00e1lili jako funk\u010dn\u00ed a implementovali ji v posledn\u00ed aktualizaci aplikace pro iOS.<br \/>\nZ\u00e1jemci o technickou str\u00e1nku mohou nahl\u00e9dnout do zdrojov\u00e9ho k\u00f3du: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Adamant-im\/adamant-notificationService\/\">github.com\/Adamant-im\/adamant-notificationService<\/a><\/noindex>.<br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/456902\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0442\u043e\u043c, \u0447\u0435\u043c \u043c\u044b \u0441 \u043a\u043e\u043b\u043b\u0435\u0433\u0430\u043c\u0438 \u0437\u0430\u043d\u044f\u0442\u044b \u0443\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432: \u043e \u043f\u0443\u0448-\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f\u0445 \u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u043e\u0432. \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0443\u043f\u043e\u0440 \u0441\u0434\u0435\u043b\u0430\u043d \u043d\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0432\u044b\u044f\u0441\u043d\u044f\u043b\u0438, \u0435\u0441\u0442\u044c \u043b\u0438 \u0443 \u043f\u0443\u0448-\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u201c\u0441\u043b\u0430\u0431\u044b\u0435 \u043c\u0435\u0441\u0442\u0430\u201d \u0438 \u0435\u0441\u043b\u0438 \u0434\u0430, \u0442\u043e \u043a\u0430\u043a \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0445 \u043d\u0438\u0432\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u0443 \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u043e\u043f\u0446\u0438\u044e \u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26645,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35532","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0442\u043e\u043c, \u0447\u0435\u043c \u043c\u044b \u0441 \u043a\u043e\u043b\u043b\u0435\u0433\u0430\u043c\u0438 \u0437\u0430\u043d\u044f\u0442\u044b \u0443\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432: \u043e \u043f\u0443\u0448-\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f\u0445 \u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u043e\u0432. \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0443\u043f\u043e\u0440 \u0441\u0434\u0435\u043b\u0430\u043d \u043d\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/bezopasnye-push-uvedomleniya-ot-teorii-k-praktike\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 push-\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f: \u043e\u0442 \u0442\u0435\u043e\u0440\u0438\u0438 \u043a \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0442\u043e\u043c, \u0447\u0435\u043c \u043c\u044b \u0441 \u043a\u043e\u043b\u043b\u0435\u0433\u0430\u043c\u0438 \u0437\u0430\u043d\u044f\u0442\u044b \u0443\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432: \u043e \u043f\u0443\u0448-\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f\u0445 \u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u043e\u0432. \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0443\u043f\u043e\u0440 \u0441\u0434\u0435\u043b\u0430\u043d \u043d\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/bezopasnye-push-uvedomleniya-ot-teorii-k-praktike\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:04:52+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:04:52+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Bezpe\u010dn\u00e9 push notifikace: od teorie k praxi | ProHoster","description":"Ahoj, Habr! Dneska v\u00e1m pov\u00edm o tom, \u010demu se s kolegy v\u011bnujeme u\u017e n\u011bkolik m\u011bs\u00edc\u016f: o push notifikac\u00edch pro mobiln\u00ed messengery. Jak jsem ji\u017e zm\u00ednil, na\u0161e aplikace se zam\u011b\u0159uje na bezpe\u010dnost.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/bezopasnye-push-uvedomleniya-ot-teorii-k-praktike","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 push-\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f: \u043e\u0442 \u0442\u0435\u043e\u0440\u0438\u0438 \u043a \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u0442\u043e\u043c, \u0447\u0435\u043c \u043c\u044b \u0441 \u043a\u043e\u043b\u043b\u0435\u0433\u0430\u043c\u0438 \u0437\u0430\u043d\u044f\u0442\u044b \u0443\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432: \u043e \u043f\u0443\u0448-\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f\u0445 \u0434\u043b\u044f \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u043c\u0435\u0441\u0441\u0435\u043d\u0434\u0436\u0435\u0440\u043e\u0432. \u041a\u0430\u043a \u044f \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b, \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0443\u043f\u043e\u0440 \u0441\u0434\u0435\u043b\u0430\u043d \u043d\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c.","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/bezopasnye-push-uvedomleniya-ot-teorii-k-praktike","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:04:52+00:00","article:modified_time":"2019-10-31T19:04:52+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35532","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 23:40:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:00:25","updated":"2026-01-21 23:40:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/35532","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=35532"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/35532\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/26645"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=35532"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=35532"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=35532"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}