{"id":131,"date":"2025-02-20T00:00:00","date_gmt":"2025-02-19T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/sl\/wordpress-6-8-bcrypt-wp-password-bcrypt-upokojitev\/"},"modified":"2026-01-20T06:33:06","modified_gmt":"2026-01-20T05:33:06","slug":"wordpress-6-8-bcrypt-wp-password-bcrypt-upokojitev","status":"publish","type":"post","link":"https:\/\/helloblog.io\/sl\/wordpress-6-8-bcrypt-wp-password-bcrypt-upokojitev\/","title":{"rendered":"WordPress 6.8 prina\u0161a bcrypt v jedro: \u010das je, da upokoji\u0161 wp-password-bcrypt"},"content":{"rendered":"\n<p>V WordPress projektih, kjer se resno jemlje varnost, je bila ena od pogostih dopolnitev zadnja leta uporaba paketa <code>wp-password-bcrypt<\/code>. Ideja je bila preprosta: WordPressu dodati sodobnej\u0161e hashiranje gesel (bcrypt), \u0161e preden bi to znal core. Z WordPress 6.8 se ta zgodba obrne \u2013 bcrypt postane privzeta metoda hashiranja gesel v jedru, zato dodatni paket nima ve\u010d prave vloge.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kaj se dejansko spreminja v WordPress 6.8<\/h2>\n\n\n\n<p>Po napovedi iz core ekipe bo WordPress 6.8 za hashiranje gesel uporabljal bcrypt. Bcrypt je dobro uveljavljen algoritem za shranjevanje gesel, zasnovan tako, da je namerno po\u010dasnej\u0161i (t. i. <em>work factor<\/em>), kar ote\u017ei brute-force in podobne napade, \u010de napadalec pride do baze hashov.<\/p>\n\n\n\n<p>Prakti\u010dna posledica: varnej\u0161a privzeta avtentikacija v WordPressu brez dodatnih pluginov ali Composer paketov.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zakaj to pomeni konec za wp-password-bcrypt<\/h2>\n\n\n\n<p>Roots ekipa je paket <code>wp-password-bcrypt<\/code> prvotno naredila zato, ker WordPress jedro ni ponujalo \u201cmo\u010dnega\u201d hashiranja gesel v skladu z modernimi pri\u010dakovanji. Ko pa core prevzame isto vlogo, postane paket redundanten \u2013 v najbolj\u0161em primeru nepotreben, v najslab\u0161em pa \u0161e en kos kode, ki ga mora\u0161 vzdr\u017eevati in preverjati v deployment pipeline-u.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u010ce ima\u0161 WordPress 6.8+: lahko ga odstrani\u0161 brez migracij<\/h2>\n\n\n\n<p>Klju\u010dna informacija za vzdr\u017eevalce produkcijskih strani: \u010de tvoja stran te\u010de na WordPress 6.8 ali novej\u0161em, <code>wp-password-bcrypt<\/code> ne potrebuje\u0161 ve\u010d in ga lahko varno odstrani\u0161. Obstoje\u010da gesla bodo \u0161e naprej delovala brez posebnih migracijskih korakov \u2013 WordPress jedro naj bi avtentikacijo in prehod obravnavalo \u201cseamless\u201d, kjer je to smiselno.<\/p>\n\n\n\n<div class=\"wp-block-group callout callout-info is-style-info is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:1px;border-radius:8px;padding-top:1rem;padding-right:1.5rem;padding-bottom:1rem;padding-left:1.5rem\">\n\n<h4 class=\"wp-block-heading callout-title\">Zakaj \u201cbrez migracije\u201d ni trivialna obljuba<\/h4>\n\n\n<p>Pri spremembah hashiranja gesel je kriti\u010dno, da uporabnikom ne \u201czlomi\u0161\u201d prijave. Napoved za WordPress 6.8 implicira, da bo core poskrbel za kompatibilnost in postopno uporabo bcrypta, ne da bi moral ro\u010dno prepisovati hashe v bazi.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Kaj bo Roots naredil s projektom<\/h2>\n\n\n\n<p>Roots je jasno napovedal, da bo <code>wp-password-bcrypt<\/code> uradno upokojen v skladu s spremembo v WordPress 6.8. To se odrazi v treh konkretnih korakih:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Paket bo na Packagistu ozna\u010den kot <em>abandoned<\/em> (opu\u0161\u010den).<\/li>\n\n\n<li>Reference nanj bodo odstranjene iz Bedrocka in pripadajo\u010de dokumentacije.<\/li>\n\n\n<li>GitHub repozitorij bo arhiviran.<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Kako to vpliva na Bedrock\/Composer projekte v praksi<\/h2>\n\n\n\n<p>\u010ce ima\u0161 WordPress postavljen \u201cmoderno\u201d (Bedrock ali lastna Composer struktura), je to ena od tistih sprememb, ki ti dejansko poenostavi setup: manj dependencyjev, manj \u201cspecial-case\u201d dokumentacije in manj vpra\u0161anj, kaj se zgodi ob ve\u010djih posodobitvah jedra.<\/p>\n\n\n\n<p>Tipi\u010den scenarij je, da v <code>composer.json<\/code> najde\u0161 <code>roots\/wp-password-bcrypt<\/code> med odvisnostmi. Ko cilja\u0161 na WordPress 6.8+, ga lahko odstrani\u0161 in naredi\u0161 standarden Composer update. Pri tem je smiselno, da spremembo izvede\u0161 skupaj z nadgradnjo core-a, da ne ostane\u0161 v vmesnem stanju (stara verzija WordPressa brez paketa).<\/p>\n\n\n\n<div class=\"wp-block-group callout callout-warning is-style-warning is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:1px;border-radius:8px;padding-top:1rem;padding-right:1.5rem;padding-bottom:1rem;padding-left:1.5rem\">\n\n<h4 class=\"wp-block-heading callout-title\">Pozor pri \u010dasovnici nadgradenj<\/h4>\n\n\n<p>\u010ce si \u0161e na WordPress < 6.8, <code>wp-password-bcrypt<\/code> ne odstranjuj samo zato, ker je projekt opu\u0161\u010den. Najprej na\u010drtuj nadgradnjo WordPress jedra, \u0161ele nato odstrani paket.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Zakaj je to dobra novica za WordPress varnost<\/h2>\n\n\n\n<p>Ko varnostne izbolj\u0161ave postanejo del jedra, se zgodita dve pozitivni stvari: (1) ve\u010dja baza namestitev dobi bolj\u0161o privzeto za\u0161\u010dito, in (2) manj je potrebe po \u201cmust-have\u201d dodatkih, ki jih mora ekipa vsaki\u010d znova vklju\u010devati v vsako novo kodo bazo. Pri geslih je to \u0161e posebej pomembno, ker je konsistentnost in \u0161iroka uporaba bolj varne privzete nastavitve pogosto bolj u\u010dinkovita kot popolna re\u0161itev, ki jo uporablja le manj\u0161i del ekosistema.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Povzetek<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>WordPress 6.8 naj bi privzeto uporabljal bcrypt za hashiranje gesel.<\/li>\n\n\n<li>\u010ce si na WordPress 6.8 ali novej\u0161em, <code>wp-password-bcrypt<\/code> ne potrebuje\u0161 ve\u010d.<\/li>\n\n\n<li>Odstranitev paketa naj ne bi zahtevala migracije obstoje\u010dih gesel.<\/li>\n\n\n<li>Roots bo paket ozna\u010dil kot opu\u0161\u010den, odstranil reference iz Bedrocka in arhiviral repozitorij.<\/li>\n\n<\/ul>\n\n\n<div class=\"references-section\">\n                <h2>Reference \/ Viri<\/h2>\n                <ul class=\"references-list\"><li><a href=\"https:\/\/roots.io\/sunsetting-wp-password-bcrypt-with-wordpress-6-8\/\" target=\"_blank\" rel=\"noopener noreferrer\">Sunsetting wp-password-bcrypt with WordPress 6.8<\/a><\/li><li><a href=\"https:\/\/make.wordpress.org\/core\/2025\/02\/17\/wordpress-6-8-will-use-bcrypt-for-password-hashing\/\" target=\"_blank\" rel=\"noopener noreferrer\">WordPress 6.8 will use bcrypt for password hashing<\/a><\/li><li><a href=\"https:\/\/github.com\/roots\/wp-password-bcrypt\" target=\"_blank\" rel=\"noopener noreferrer\">wp-password-bcrypt<\/a><\/li><li><a href=\"https:\/\/github.com\/roots\/bedrock\" target=\"_blank\" rel=\"noopener noreferrer\">Bedrock<\/a><\/li><li><a href=\"https:\/\/discourse.roots.io\/t\/-\/29282\" target=\"_blank\" rel=\"noopener noreferrer\">Discuss this post on Roots Discourse<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>\u010ce v Bedrocku ali kateremkoli Composer setupu \u0161e vedno uporablja\u0161 `wp-password-bcrypt`, bo z WordPress 6.8 to postalo odve\u010d. Jedro WordPressa prehaja na bcrypt, kar pomeni manj dodatkov in bolj\u0161i privzeti security model.<\/p>\n","protected":false},"author":47,"featured_media":129,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[68,70,7,11,10],"class_list":["post-131","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ekosistem-wordpress","tag-bcrypt","tag-bedrock","tag-composer","tag-varnost","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/posts\/131","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/users\/47"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/comments?post=131"}],"version-history":[{"count":1,"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/posts\/131\/revisions"}],"predecessor-version":[{"id":153,"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/posts\/131\/revisions\/153"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/media\/129"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/media?parent=131"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/categories?post=131"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/tags?post=131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}