{"id":2105,"date":"2016-01-03T04:52:53","date_gmt":"2016-01-03T04:52:53","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2105"},"modified":"2025-06-13T19:28:04","modified_gmt":"2025-06-14T02:28:04","slug":"hashing-passwords-stored-in-couchbase-server-with-nodejs","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/","title":{"rendered":"Como fazer hashing de senhas armazenadas no servidor Couchbase com o Node.js"},"content":{"rendered":"<h2>Por que voc\u00ea deve fazer o Hash<\/h2>\n<p>Todas as senhas devem ser transformadas em hash antes de serem inseridas em um banco de dados, pois \u00e9 preciso considerar o cen\u00e1rio em que algum usu\u00e1rio mal-intencionado tenta obter acesso aos seus dados. As senhas s\u00e3o informa\u00e7\u00f5es confidenciais que voc\u00ea n\u00e3o quer que as pessoas vejam.<\/p>\n<p>Agora n\u00e3o vamos confundir criptografia com hashing. A criptografia de algo pressup\u00f5e que ele possa ser descriptografado posteriormente. Embora isso seja melhor do que deixar como texto simples, o que realmente queremos \u00e9 algo que n\u00e3o possa ser descriptografado. \u00c9 isso que o hashing nos oferece.<\/p>\n<h2>Hashing com Bcrypt<\/h2>\n<p>Para este exemplo, usaremos o mais popular <a href=\"https:\/\/www.npmjs.com\/package\/bcryptjs\">bcryptjs<\/a> para o Node.js. No entanto, as regras que ela segue s\u00e3o as mesmas que as de outras bibliotecas Bcrypt padr\u00e3o. Voc\u00ea passa uma string a ser transformada em hash e, normalmente, um salt tamb\u00e9m.<\/p>\n<p>Para o exemplo de <strong>bcryptjs<\/strong> voc\u00ea faria algo assim, de acordo com a documenta\u00e7\u00e3o:<\/p>\n<pre><code class=\"language-javascript\">\r\nvar bcrypt = require(\"bcryptjs\");\r\nvar salt = bcrypt.genSaltSync(10);\r\nvar hash = bcrypt.hashSync(\"my-password\", salt);\r\n<\/code><\/pre>\n<p>O hash produzido a partir disso n\u00e3o seria leg\u00edvel por humanos e, portanto, seguro para ser armazenado em um banco de dados. Mas como comparar as senhas no cen\u00e1rio em que \u00e9 necess\u00e1rio implementar um login de usu\u00e1rio?<\/p>\n<h2>Valida\u00e7\u00e3o com base em senhas salvas<\/h2>\n<p>As bibliotecas Bcrypt sempre t\u00eam uma fun\u00e7\u00e3o para comparar uma senha de texto simples com um hash. \u00c9 assim que voc\u00ea validaria uma senha no cen\u00e1rio de login do usu\u00e1rio.<\/p>\n<pre><code class=\"language-javascript\">\r\nbcrypt.compareSync(\"wrong-password\", hash);\r\nbcrypt.compareSync(\"my-password\", hash);\r\n<\/code><\/pre>\n<p>As duas linhas acima foram praticamente retiradas da documenta\u00e7\u00e3o. Na primeira linha, a compara\u00e7\u00e3o falhar\u00e1 e retornar\u00e1 false para o usu\u00e1rio. Nesse caso, voc\u00ea sabe que os valores est\u00e3o errados, mesmo sem saber qual \u00e9 realmente a senha com hash. No caso da segunda linha, as senhas s\u00e3o iguais e voc\u00ea receber\u00e1 uma resposta verdadeira.<\/p>\n<h2>Um exemplo de trabalho<\/h2>\n<p>Vamos criar um exemplo pr\u00e1tico com o que aprendemos acima. Crie um novo diret\u00f3rio em algum lugar e, nele, crie um novo <strong>package.json<\/strong> com o seguinte JSON:<\/p>\n<pre><code class=\"language-json\">\r\n{\r\n    \"name\": \"password-hashing-example\",\r\n    \"version\": \"1.0.0\",\r\n    \"description\": \"An example of using the Node.js SDK for Couchbase and Bcrypt to hash passwords\",\r\n    \"author\": \"Couchbase, Inc.\",\r\n    \"license\": \"MIT\",\r\n    \"dependencies\": {\r\n        \"bcryptjs\": \"^2.3.0\",\r\n        \"couchbase\": \"^2.0.8\",\r\n        \"uuid\": \"^2.0.1\"\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>As partes importantes s\u00e3o as depend\u00eancias. Estamos incluindo <strong>bcryptjs<\/strong> para hashing, <strong>couchbase<\/strong> para comunica\u00e7\u00e3o com o Couchbase por meio de nosso aplicativo, e <strong>uuid<\/strong> para gerar chaves de documento exclusivas.<\/p>\n<p>Agora precisamos criar um novo arquivo chamado <strong>config.json<\/strong> em nosso diret\u00f3rio de projeto e inclua o seguinte JSON:<\/p>\n<pre><code class=\"language-json\">\r\n{\r\n    \"couchbase\": {\r\n        \"server\": \"127.0.0.1:8091\",\r\n        \"bucket\": \"restful-sample\"\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>Voc\u00ea deve trocar o servidor e o bucket pelo que planeja usar.<\/p>\n<p>Agora vamos \u00e0 parte divertida! Crie um arquivo chamado <strong>app.js<\/strong> pois \u00e9 nele que todo o nosso c\u00f3digo ser\u00e1 inserido. Lembre-se de que este \u00e9 um exemplo, portanto, a funcionalidade ser\u00e1 limitada. Adicione o seguinte c\u00f3digo JavaScript \u00e0 se\u00e7\u00e3o <strong>app.js<\/strong> file:<\/p>\n<pre><code class=\"language-javascript\">\r\nvar couchbase = require(\"couchbase\");\r\nvar bcrypt = require(\"bcryptjs\");\r\nvar uuid = require(\"uuid\");\r\nvar config = require(\".\/config\");\r\n\r\nvar bucket = (new couchbase.Cluster(config.couchbase.server)).openBucket(config.couchbase.bucket);\r\n\r\nvar jsonData = {\r\n    id: uuid.v4(),\r\n    username: \"nraboy\",\r\n    password: bcrypt.hashSync(\"my-password\", 10)\r\n}\r\n\r\nbucket.insert(\"user::\" + jsonData.id, jsonData, function(error, result) {\r\n    bucket.get(\"user::\" + jsonData.id, function(error, result) {\r\n        console.log(\"Password Match -&gt; \" + bcrypt.compareSync(\"wrong-password\", result.value.password));\r\n        console.log(\"Password Match -&gt; \" + bcrypt.compareSync(\"my-password\", result.value.password));\r\n    });\r\n});\r\n<\/code><\/pre>\n<p>Basicamente, estamos apenas criando um documento JSON com uma senha com hash e inserindo-o no Couchbase Server. Ap\u00f3s a conclus\u00e3o da inser\u00e7\u00e3o, obtemos o documento e comparamos as senhas.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>Voc\u00ea nunca deve armazenar senhas de texto simples em seu banco de dados. N\u00e3o importa qu\u00e3o seguro seja o seu banco de dados ou que tipo de banco de dados esteja usando. Ao usar o algoritmo de hashing Bcrypt em suas senhas, voc\u00ea pode adicionar uma enorme quantidade de seguran\u00e7a aos seus usu\u00e1rios.<\/p>\n<p>O <a href=\"https:\/\/www.npmjs.com\/package\/bcryptjs\">bcryptjs<\/a> para Node.js \u00e9 apenas uma das muitas bibliotecas adequadas que podem realizar essa tarefa.<\/p>","protected":false},"excerpt":{"rendered":"<p>Why You Should Hash All passwords should be hashed before entering a database because you have to consider the scenario where some malicious user attempts to gain entry into your data. Passwords are sensitive pieces of information that you don&#8217;t [&hellip;]<\/p>","protected":false},"author":63,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816,1822,1813],"tags":[1560,1559],"ppma_author":[9032],"class_list":["post-2105","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-node-js","category-security","tag-bcrypt","tag-hashing"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Hashing Passwords Stored in Couchbase Server with Node.js<\/title>\n<meta name=\"description\" content=\"Learn why to use hash and check how the Bcrypt hashing algorithm on your passwords can add a tremendous amount of security for your users.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/pt\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hashing Passwords Stored in Couchbase Server with Node.js\" \/>\n<meta property=\"og:description\" content=\"Learn why to use hash and check how the Bcrypt hashing algorithm on your passwords can add a tremendous amount of security for your users.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/thepolyglotdeveloper\" \/>\n<meta property=\"article:published_time\" content=\"2016-01-03T04:52:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T02:28:04+00:00\" \/>\n<meta name=\"author\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nraboy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Hashing Passwords Stored in Couchbase Server with Node.js\",\"datePublished\":\"2016-01-03T04:52:53+00:00\",\"dateModified\":\"2025-06-14T02:28:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/\"},\"wordCount\":520,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"bcrypt\",\"hashing\"],\"articleSection\":[\"Couchbase Server\",\"Node.js\",\"Security\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/\",\"name\":\"Hashing Passwords Stored in Couchbase Server with Node.js\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-01-03T04:52:53+00:00\",\"dateModified\":\"2025-06-14T02:28:04+00:00\",\"description\":\"Learn why to use hash and check how the Bcrypt hashing algorithm on your passwords can add a tremendous amount of security for your users.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Hashing Passwords Stored in Couchbase Server with Node.js\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\",\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"caption\":\"Nic Raboy, Developer Advocate, Couchbase\"},\"description\":\"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand.\",\"sameAs\":[\"https:\/\/www.thepolyglotdeveloper.com\",\"https:\/\/www.facebook.com\/thepolyglotdeveloper\",\"https:\/\/x.com\/nraboy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Como fazer hashing de senhas armazenadas no servidor Couchbase com o Node.js","description":"Learn why to use hash and check how the Bcrypt hashing algorithm on your passwords can add a tremendous amount of security for your users.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/pt\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/","og_locale":"pt_BR","og_type":"article","og_title":"Hashing Passwords Stored in Couchbase Server with Node.js","og_description":"Learn why to use hash and check how the Bcrypt hashing algorithm on your passwords can add a tremendous amount of security for your users.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2016-01-03T04:52:53+00:00","article_modified_time":"2025-06-14T02:28:04+00:00","author":"Nic Raboy, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@nraboy","twitter_misc":{"Written by":"Nic Raboy, Developer Advocate, Couchbase","Est. reading time":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Hashing Passwords Stored in Couchbase Server with Node.js","datePublished":"2016-01-03T04:52:53+00:00","dateModified":"2025-06-14T02:28:04+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/"},"wordCount":520,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["bcrypt","hashing"],"articleSection":["Couchbase Server","Node.js","Security"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/","url":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/","name":"Como fazer hashing de senhas armazenadas no servidor Couchbase com o Node.js","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-01-03T04:52:53+00:00","dateModified":"2025-06-14T02:28:04+00:00","description":"Learn why to use hash and check how the Bcrypt hashing algorithm on your passwords can add a tremendous amount of security for your users.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/hashing-passwords-stored-in-couchbase-server-with-nodejs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Hashing Passwords Stored in Couchbase Server with Node.js"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1","name":"Nic Raboy, defensor dos desenvolvedores, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354","url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","caption":"Nic Raboy, Developer Advocate, Couchbase"},"description":"Nic Raboy \u00e9 um defensor das modernas tecnologias de desenvolvimento m\u00f3vel e da Web. Ele tem experi\u00eancia em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experi\u00eancias de desenvolvimento relacionadas a tornar o desenvolvimento m\u00f3vel e da Web mais f\u00e1cil de entender.","sameAs":["https:\/\/www.thepolyglotdeveloper.com","https:\/\/www.facebook.com\/thepolyglotdeveloper","https:\/\/x.com\/nraboy"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/nic-raboy-2\/"}]}},"authors":[{"term_id":9032,"user_id":63,"is_guest":0,"slug":"nic-raboy-2","display_name":"Nic Raboy, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","first_name":"Nic","last_name":"Raboy","user_url":"https:\/\/www.thepolyglotdeveloper.com","author_category":"","description":"Nic Raboy \u00e9 um defensor das modernas tecnologias de desenvolvimento m\u00f3vel e da Web. Ele tem experi\u00eancia em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experi\u00eancias de desenvolvimento relacionadas a tornar o desenvolvimento m\u00f3vel e da Web mais f\u00e1cil de entender."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2105","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=2105"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2105\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=2105"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2105"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2105"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=2105"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}