{"id":121,"date":"2025-02-20T00:00:00","date_gmt":"2025-02-19T23:00:00","guid":{"rendered":"https:\/\/helloblog.io\/hr\/wordpress-6-8-bcrypt-wp-password-bcrypt\/"},"modified":"2026-01-20T06:33:04","modified_gmt":"2026-01-20T05:33:04","slug":"wordpress-6-8-bcrypt-wp-password-bcrypt","status":"publish","type":"post","link":"https:\/\/helloblog.io\/hr\/wordpress-6-8-bcrypt-wp-password-bcrypt\/","title":{"rendered":"WordPress 6.8 prelazi na bcrypt: vrijeme je da makne\u0161 wp-password-bcrypt iz projekta"},"content":{"rendered":"\n<p>Godinama je jedna od \u010de\u0161\u0107ih zamjerki WordPressu bila pri\u010da oko hashiranja lozinki: core je dugo vremena koristio mehanizme koji su danas jednostavno ispod o\u010dekivanja za moderne aplikacije. Zbog toga su se pojavila rje\u0161enja poput Rootsovog paketa <code>wp-password-bcrypt<\/code>, koji je \u201czakrpao\u201d problem na na\u010din koji je bio pragmati\u010dan i relativno bezbolan za postoje\u0107e instalacije.<\/p>\n\n\n\n<p>S WordPressom 6.8 situacija se mijenja iz temelja. Prema najavi na Make WordPress Core, bcrypt postaje zadani (default) algoritam za hashiranje lozinki u samom WordPress coreu. To je velika sigurnosna nadogradnja, ali i signal da su vanjski \u201cpatch\u201d paketi poput <code>wp-password-bcrypt<\/code> odsad suvi\u0161ni.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0160to se konkretno mijenja u WordPressu 6.8<\/h2>\n\n\n\n<p>bcrypt je provjeren algoritam za pohranu lozinki koji je dizajniran da bude spor i otporan na brute-force napade (uz konfigurabilan \u201ccost\u201d). U praksi, to zna\u010di da je kompromitiranje baze s hashiranim lozinkama osjetno te\u017ee nego kod br\u017eih, starijih pristupa.<\/p>\n\n\n\n<p>Najbitniji dio pri\u010de: WordPress 6.8 (prema objavi) ugra\u0111uje bcrypt u core i koristi ga kao zadanu metodu za hashiranje korisni\u010dkih lozinki. Time WordPress autentikacija postaje modernija bez dodatnih pluginova ili Composer paketa.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Za\u0161to wp-password-bcrypt ide u \u201csunset\u201d<\/h2>\n\n\n\n<p>Rootsov <code>wp-password-bcrypt<\/code> je nastao upravo zato da WordPress instalacije dobiju ja\u010de hashiranje prije nego \u0161to to do\u0111e u core. Kad core preuzme istu odgovornost, dodatni paket postaje redundantna komponenta koja samo pove\u0107ava povr\u0161inu odr\u017eavanja: jo\u0161 jedan dependency, jo\u0161 jedna potencijalna to\u010dka konflikta i jo\u0161 jedan element koji treba pratiti kroz updateove.<\/p>\n\n\n\n<p>Roots je zato najavio da \u0107e, s obzirom na WordPress 6.8, krenuti s ga\u0161enjem (sunsetting) paketa:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>na Packagistu \u0107e <code>wp-password-bcrypt<\/code> biti ozna\u010den kao <strong>abandoned<\/strong><\/li>\n\n\n<li>reference \u0107e biti uklonjene iz Bedrocka i povezane dokumentacije<\/li>\n\n\n<li>GitHub repozitorij \u0107e biti arhiviran<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Imam WordPress 6.8+ \u2014 mogu li samo maknuti paket?<\/h2>\n\n\n\n<p>Da. Ako ti je site na WordPressu 6.8 ili novijem, prema Rootsovoj objavi <code>wp-password-bcrypt<\/code> vi\u0161e nije potreban i mo\u017ee\u0161 ga sigurno ukloniti. Bitno: ne treba\u0161 raditi nikakvu migraciju lozinki. Postoje\u0107e lozinke nastavljaju raditi, a WordPress core preuzima autentikaciju i koristi bcrypt gdje je primjenjivo.<\/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\">Prakti\u010dna poruka za deploy<\/h4>\n\n\n<p>Najve\u0107a dobit je \u0161to mo\u017ee\u0161 pojednostaviti dependency stablo: manje paketa, manje mogu\u0107ih edge-caseova i jasnija sigurnosna pri\u010da jer je sve u coreu.<\/p>\n\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Kako to izgleda u Bedrock\/Composer projektima<\/h2>\n\n\n\n<p>Ako si u Bedrocku dodavao <code>roots\/wp-password-bcrypt<\/code> kroz Composer, promjena je tipi\u010dno vrlo jednostavna: ukloniti dependency i deployati kao i ina\u010de. Roots je najavio da \u0107e i sami ukloniti reference iz Bedrocka i dokumentacije, \u0161to je dobar znak da se \u201cmainstream\u201d put modernih WordPress projekata pojednostavljuje.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Uklanjanje paketa iz Composer dependencija\ncomposer remove roots\/wp-password-bcrypt\n\n# Standardni koraci nakon toga ovise o tvom workflowu:\n# - commit composer.lock\n# - deploy\n# - provjeri login na stagingu\/produkciji\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#6A737D\"># Uklanjanje paketa iz Composer dependencija<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B392F0\">composer<\/span><span style=\"color:#9ECBFF\"> remove<\/span><span style=\"color:#9ECBFF\"> roots\/wp-password-bcrypt<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\"># Standardni koraci nakon toga ovise o tvom workflowu:<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\"># - commit composer.lock<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\"># - deploy<\/span><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\"># - provjeri login na stagingu\/produkciji<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Nakon deploya, fokusiraj se na osnovni smoke test: login\/logout, reset lozinke i kreiranje novog korisnika. Ne zato \u0161to o\u010dekuje\u0161 problem, nego zato \u0161to je to najbr\u017ei na\u010din da potvrdi\u0161 da je autentikacija o\u010dekivano pre\u0161la na core implementaciju.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0160to ako sam jo\u0161 na WordPressu prije 6.8?<\/h2>\n\n\n\n<p>Rootsova objava se eksplicitno ve\u017ee uz WordPress 6.8 i kasnije. Ako si na starijoj verziji, <code>wp-password-bcrypt<\/code> i dalje ima smisla u kontekstu \u201cja\u010deg hashiranja prije core podr\u0161ke\u201d, ali treba ura\u010dunati da je paket na putu prema napu\u0161tanju (abandoned) i arhiviranju repozitorija. U praksi, to je jo\u0161 jedan razlog da planira\u0161 upgrade WordPressa \u2014 ne samo zbog featurea, nego i zbog sigurnosnih standarda.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zaklju\u010dak<\/h2>\n\n\n\n<p>WordPress 6.8 s bcryptom kao zadanim hashiranjem lozinki je jedna od onih promjena koje realno podi\u017eu sigurnosni baseline cijelog ekosustava. Za timove koji rade modernije WordPress projekte (Bedrock\/Composer), to je ujedno i prilika da se rije\u0161e jednog dependencya bez gubitka funkcionalnosti: <code>wp-password-bcrypt<\/code> se mo\u017ee maknuti, a autentikacija nastavlja raditi bez migracija.<\/p>\n\n\n<div class=\"references-section\">\n                <h2>Reference \/ Izvori<\/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><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>Ako koristi\u0161 Rootsov wp-password-bcrypt da bi WordPress lozinke bile sigurnije, WordPress 6.8 ti napokon omogu\u0107uje da taj sloj izbaci\u0161 bez ikakve migracije.<\/p>\n","protected":false},"author":43,"featured_media":120,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[67,68,3,33,10],"class_list":["post-121","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sigurnost","tag-autentikacija","tag-bcrypt","tag-roots","tag-sigurnost","tag-wordpress"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/posts\/121","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/users\/43"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/comments?post=121"}],"version-history":[{"count":1,"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/posts\/121\/revisions"}],"predecessor-version":[{"id":142,"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/posts\/121\/revisions\/142"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/media\/120"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/media?parent=121"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/categories?post=121"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/hr\/wp-json\/wp\/v2\/tags?post=121"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}