{"id":118226,"date":"2024-07-25T15:43:00","date_gmt":"2024-07-25T13:43:02","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/dostup-k-dannym-iz-udalyonnyh-i-privatnyh-repozitoriev-na-github-imeyushhih-forki"},"modified":"2024-07-25T15:43:00","modified_gmt":"2024-07-25T13:43:02","slug":"dostup-k-dannym-iz-udalyonnyh-i-privatnyh-repozitoriev-na-github-imeyushhih-forki","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/news\/dostup-k-dannym-iz-udalyonnyh-i-privatnyh-repozitoriev-na-github-imeyushhih-forki","title":{"rendered":"Dost\u0119p do danych z zdalnych i prywatnych repozytori\u00f3w na GitHubie, kt\u00f3re maj\u0105 forki","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Firma Truffle Security opublikowa\u0142a scenariusze atak\u00f3w na kilka typowych metod pracy z repozytoriami na GitHubie, kt\u00f3re pozwalaj\u0105 na pozyskiwanie danych z zdalnych repozytori\u00f3w posiadaj\u0105cych publiczne forki lub stworzonych jako forki.     <\/p>\n<p>Mo\u017cliwo\u015b\u0107 dost\u0119pu do commit\u00f3w za pomoc\u0105 hasha we wszystkich powi\u0105zanych forach repozytori\u00f3w wynika z tego, \u017ce GitHub w celu optymalizacji i eliminacji duplikat\u00f3w przechowuje wszystkie obiekty z g\u0142\u00f3wnego repozytorium i for\u00f3w razem, jedynie logicznie rozdzielaj\u0105c przynale\u017cno\u015b\u0107 commit\u00f3w. Taki spos\u00f3b przechowywania pozwala na przegl\u0105danie w g\u0142\u00f3wnym repozytorium dowolnego commita z dowolnego forka, wyra\u017anie wskazuj\u0105c jego hash w URL. Na przyk\u0142ad, u\u017cytkownik mo\u017ce stworzy\u0107 fork repozytorium '\/torvalds\/linux' i doda\u0107 do niego dowolny kod, po czym kod ten stanie si\u0119 dost\u0119pny za pomoc\u0105 bezpo\u015bredniego hasha w repozytorium '\/torvalds\/linux'. W przypadku usuni\u0119cia repozytorium, je\u015bli istnieje przynajmniej jeden publiczny fork, dane z usuni\u0119tego repozytorium pozostaj\u0105 dost\u0119pne przez hash commita.    <\/p>\n<p>Zaproponowano trzy scenariusze, kt\u00f3re stanowi\u0105 zagro\u017cenie dla bezpiecze\u0144stwa:   <\/p>\n<ul>\n<li class=\"l\"> Pierwszy scenariusz dotyczy sytuacji, w kt\u00f3rych deweloperzy tworz\u0105 forki publicznych repozytori\u00f3w, wprowadzaj\u0105 w nich zmiany, eksperymentuj\u0105, a nast\u0119pnie je usuwaj\u0105. Opr\u00f3cz wycieku kodu, kt\u00f3ry nie jest przeznaczony do publikacji, niebezpiecze\u0144stwo stanowi sytuacja, w kt\u00f3rej w eksperymentach w kodzie plik\u00f3w z przyk\u0142adami s\u0105 dodawane aktywne klucze dost\u0119pu do API. W takim przypadku atakuj\u0105cy mo\u017ce uzyska\u0107 dost\u0119p do zmiany po hashu commita, kieruj\u0105c si\u0119 po usuni\u0119ciu forka przez g\u0142\u00f3wne repozytorium. Na przyk\u0142ad, w spos\u00f3b zaproponowany przez badaczy uda\u0142o im si\u0119 zidentyfikowa\u0107 30 aktywnych kluczy dost\u0119pu do API, analizuj\u0105c trzy powi\u0105zane z machine learning repozytoria z du\u017c\u0105 liczb\u0105 fork\u00f3w.\n<li class=\"l\"> Drugi scenariusz dotyczy mo\u017cliwo\u015bci uzyskania dost\u0119pu do danych po usuni\u0119ciu pierwotnego repozytorium, je\u015bli dla tego repozytorium utworzono fork. Jako przyk\u0142ad podano przypadek, w kt\u00f3rym w publicznym repozytorium jednej firmy przypadkowo opublikowano klucze prywatne jednego z pracownik\u00f3w, kt\u00f3re zapewniaj\u0105 pe\u0142ny dost\u0119p do wszystkich repozytori\u00f3w tej firmy na GitHubie. Firma usun\u0119\u0142a repozytorium, z kt\u00f3rego dosz\u0142o do wycieku, ale klucze pozosta\u0142y nadal dost\u0119pne do wydobycia poprzez zapytania po hashu commit\u00f3w w repozytoriach z forkami.    <center><img decoding=\"async\" alt=\"Dost\u0119p do danych z zdalnych i prywatnych repozytori\u00f3w na GitHubie, kt\u00f3re maj\u0105 forki\" src=\"\/wp-content\/uploads\/2024\/07\/45381deb03eaa5be40baf8b4dbf7b481.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>\n<li class=\"l\"> Trzeci scenariusz zwi\u0105zany jest z modelem rozwoju projekt\u00f3w, kt\u00f3re rozwijaj\u0105 podstawow\u0105 otwart\u0105 wersj\u0119 w publicznym repozytorium oraz rozszerzon\u0105 wersj\u0119 prywatn\u0105 w repozytorium prywatnym. Je\u015bli firma pocz\u0105tkowo rozwija\u0142a projekt w prywatnym repozytorium, a nast\u0119pnie po otwarciu kodu projektu przenios\u0142a go do kategorii publicznych, ale kontynuowa\u0142a rozw\u00f3j zamkni\u0119tej wewn\u0119trznej lub rozszerzonej wersji w prywatnym forku, istnieje mo\u017cliwo\u015b\u0107 dost\u0119pu do zmian dodanych do prywatnego forka po hashach commit\u00f3w poprzez publiczne repozytorium. Przy tym dost\u0119p mo\u017cliwy jest tylko do zmian dodanych do prywatnego forka przed przeniesieniem g\u0142\u00f3wnego repozytorium do kategorii publicznych (repozytoria prywatne i publiczne s\u0105 oddzielone, ale gdy dwa repozytoria by\u0142y prywatne, commity by\u0142y przechowywane wsp\u00f3lnie, dlatego pozosta\u0142y w repozytorium po jego przeniesieniu do kategorii publicznych).    <center><img decoding=\"async\" alt=\"Dost\u0119p do danych z zdalnych i prywatnych repozytori\u00f3w na GitHubie, kt\u00f3re maj\u0105 forki\" src=\"\/wp-content\/uploads\/2024\/07\/23342cf907bd300699e913297d29b310.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>  <\/ul>\n<p>Sztuczka umo\u017cliwiaj\u0105ca dost\u0119p do commit\u00f3w w forkach repozytorium poprzez link do g\u0142\u00f3wnego repozytorium jest znana od wielu lat i okresowo u\u017cywana do r\u00f3\u017cnych \u017cart\u00f3w oraz wprowadzania w b\u0142\u0105d programist\u00f3w (na przyk\u0142ad \u017cartownisie okresowo w ten spos\u00f3b tworz\u0105 wra\u017cenie podstawiania backdoor\u00f3w w repozytorium j\u0105dra Linux na GitHubie). Jako \u015brodek przeciwdzia\u0142aj\u0105cy takim \u017cartom, GitHub doda\u0142 ostrze\u017cenie, \u017ce \u017c\u0105dany commit nie nale\u017cy do ga\u0142\u0119zi w bie\u017c\u0105cym repozytorium i mo\u017ce nale\u017ce\u0107 do forka. Przy tym sama mo\u017cliwo\u015b\u0107 dost\u0119pu do commit\u00f3w po hashu w jakichkolwiek powi\u0105zanych forkach repozytori\u00f3w traktowana by\u0142a jako nieszkodliwa, poniewa\u017c dla uzyskania danych w zdalnych i prywatnych forkach potrzebna by\u0142a znajomo\u015b\u0107 hasha commita.    <\/p>\n<p>Odnalezienie hasha commita, tworzonego na podstawie algorytmu SHA-1 i zawieraj\u0105cego 32 znaki, nie jest mo\u017cliwe, ale okaza\u0142o si\u0119, \u017ce to nie jest konieczne. GitHub obs\u0142uguje skr\u00f3con\u0105 form\u0119 odwo\u0142ywania si\u0119 do commit\u00f3w, umo\u017cliwiaj\u0105c adresowanie zmian po kilku pierwszych znakach hasha, je\u015bli nie wyst\u0119puj\u0105 kolizje z innymi commitami. Minimalna liczba znak\u00f3w dla skr\u00f3conego adresowania hasha wynosi 4, co odpowiada pr\u00f3bie wszystkich 65 tysi\u0119cy kombinacji (16^4). Przy tym, pr\u00f3ba mo\u017ce by\u0107 niepotrzebna, poniewa\u017c API GitHub pozwala na pod\u0142\u0105czenie handler\u00f3w do przechwytywania zdarze\u0144, kt\u00f3re s\u0105 wykorzystywane przez zewn\u0119trzne projekty prowadz\u0105ce archiwum z pe\u0142nym logiem wszystkich operacji, w kt\u00f3rym informacje o hashach commit\u00f3w pozostaj\u0105 nawet po usuni\u0119ciu repozytori\u00f3w.<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=61605\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Truffle Security \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0430\u0442\u0430\u043a \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0438\u043f\u043e\u0432\u044b\u0445 \u043f\u0440\u0438\u0451\u043c\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u043c\u0438 \u043d\u0430 GitHub, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u0444\u043e\u0440\u043a\u0438 \u0438\u043b\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u043a\u0430\u043a \u0444\u043e\u0440\u043a\u0438. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043a\u043e\u043c\u043c\u0438\u0442\u0430\u043c \u043f\u043e \u0445\u044d\u0448\u0443 \u0432\u043e \u0432\u0441\u0435\u0445 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0444\u043e\u0440\u043a\u0430\u043c\u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u0445 \u0432\u044b\u0437\u0432\u0430\u043d\u043e \u0442\u0435\u043c, \u0447\u0442\u043e GitHub \u0432 \u0446\u0435\u043b\u044f\u0445 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0438 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u043e\u0432 \u0445\u0440\u0430\u043d\u0438\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":118227,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-118226","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Truffle Security \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0430\u0442\u0430\u043a \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0438\u043f\u043e\u0432\u044b\u0445 \u043f\u0440\u0438\u0451\u043c\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u043c\u0438 \u043d\u0430 GitHub, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u0444\u043e\u0440\u043a\u0438 \u0438\u043b\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435.\" \/>\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\/pl\/blog\/news\/dostup-k-dannym-iz-udalyonnyh-i-privatnyh-repozitoriev-na-github-imeyushhih-forki\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0438\u0437 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 \u0438 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432 \u043d\u0430 GitHub, \u0438\u043c\u0435\u044e\u0449\u0438\u0445 \u0444\u043e\u0440\u043a\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Truffle Security \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0430\u0442\u0430\u043a \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0438\u043f\u043e\u0432\u044b\u0445 \u043f\u0440\u0438\u0451\u043c\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u043c\u0438 \u043d\u0430 GitHub, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u0444\u043e\u0440\u043a\u0438 \u0438\u043b\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/news\/dostup-k-dannym-iz-udalyonnyh-i-privatnyh-repozitoriev-na-github-imeyushhih-forki\" \/>\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=\"2024-07-25T13:43:02+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2024-07-25T13:43:02+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\udd47Dost\u0119p do danych z usuni\u0119tych i prywatnych repozytori\u00f3w na GitHubie, kt\u00f3re maj\u0105 forki | ProHoster","description":"Firma Truffle Security opublikowa\u0142a skrypty atak\u00f3w na kilka typowych metod pracy z repozytoriami na GitHubie, kt\u00f3re pozwalaj\u0105 na wydobycie danych z usuni\u0119tych repozytori\u00f3w, kt\u00f3re maj\u0105 publiczne forki lub kt\u00f3re s\u0105.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/news\/dostup-k-dannym-iz-udalyonnyh-i-privatnyh-repozitoriev-na-github-imeyushhih-forki","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","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\u0414\u043e\u0441\u0442\u0443\u043f \u043a \u0434\u0430\u043d\u043d\u044b\u043c \u0438\u0437 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 \u0438 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432 \u043d\u0430 GitHub, \u0438\u043c\u0435\u044e\u0449\u0438\u0445 \u0444\u043e\u0440\u043a\u0438 | ProHoster","og:description":"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f Truffle Security \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u0430 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0430\u0442\u0430\u043a \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0438\u043f\u043e\u0432\u044b\u0445 \u043f\u0440\u0438\u0451\u043c\u043e\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u043c\u0438 \u043d\u0430 GitHub, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0435 \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u044b\u0445 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u044e\u0442\u0441\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 \u0444\u043e\u0440\u043a\u0438 \u0438\u043b\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435.","og:url":"https:\/\/prohoster.info\/pl\/blog\/news\/dostup-k-dannym-iz-udalyonnyh-i-privatnyh-repozitoriev-na-github-imeyushhih-forki","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":"2024-07-25T13:43:02+00:00","article:modified_time":"2024-07-25T13:43:02+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"118226","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":"default","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-23 04:49:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2026-01-23 04:49:19","updated":"2026-01-23 04:49:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/118226","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=118226"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/118226\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/118227"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=118226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=118226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=118226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}