{"componentChunkName":"component---src-templates-blog-list-template-js","path":"/101","result":{"data":{"allMarkdownRemark":{"edges":[{"node":{"excerpt":"Whenever we talk about asynchronous programming in JavaScript, there is sometimes confusion in how it can be asynchronous if it is single…","fields":{"slug":"/engineering/concurrency-vs-parallelism/"},"html":"<p>Whenever we talk about asynchronous programming in JavaScript, there is sometimes confusion in how it can be asynchronous if it is single-threaded. To answer this correctly, I think it's a good thing first to understand the difference between concurrency and parallelism, two terms that are commonly brought up with multithreading.</p>\n<h2 id=\"concurrency\" style=\"position:relative;\"><a href=\"#concurrency\" aria-label=\"concurrency permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Concurrency</h2>\n<p>Concurrency describes independent parts of a program to run in an arbitrary order without affecting the outcome. A concurrent application can execute multiple tasks over an overlapping period. This means that while we can start new tasks before the previous one is complete, we cannot perform work on each task simultaneously.</p>\n<p><img src=\"/4da086c176314fb8e41d4bf512857493/concurrent-diagram.webp\" alt=\"concurrent-diagram\"></p>\n<p>You can think of a concurrent execution model as a single chef preparing a meal. Any chef worth their salt can work on multiple dishes (or various parts of a dish) at once. They might chop the vegetables for their stir-fry while the rice is steamed in the rice cooker or leave the vegetables to fry in the pan while cleaning up their workspace. In this scenario, the chef can perform multiple tasks at once; however, at any given time, he is only able to work on a particular unit of work at a given time. </p>\n<p>You might point out that the chef can perform other actions in this example scenario while something like the rice is steaming, which is technically work still being done. However, the concurrency in this scenario only applies to the chef's context, who is not actively working on the rice as it is being steamed.</p>\n<p>Similarly, the <a href=\"https://www.loginradius.com/blog/engineering/understanding-event-loop/\">JavaScript Event Loop</a> allows your scripts (the chef) to hand off tasks like HTTP requests and timeouts to the browser Web API (rice cooker), allowing the script to execute other code portions while waiting for a response. Once the Web API task is complete, it is pushed back into the Event Loop call stack. While the Web API acts as a separate thread where it can complete certain tasks outside the main thread's scope, your actual JavaScript code is still executed on a single thread concurrently.</p>\n<h2 id=\"parallelism\" style=\"position:relative;\"><a href=\"#parallelism\" aria-label=\"parallelism permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Parallelism</h2>\n<p>Parallelism describes the ability for independent parts of a program to be physically executed at the same time. A parallel application can distribute its tasks to independent processors (such as different cores or threads of a CPU) to be executed simultaneously. </p>\n<p><img src=\"/673e8d6bccb42949459d15d8adc0dc32/parallel-diagram.webp\" alt=\"parallel-diagram\"></p>\n<p>You can think of a parallel execution model as multiple chefs individually each preparing a meal. These individual chefs may be preparing their dishes in a concurrent manner (like the above) or a sequential one; either way, the result is that rather than producing a single meal, the kitchen has prepared multiple meals over a unit of time.</p>\n<p>Modern browsers allow you to program parallelly by using Web Workers. These spawn separate threads to execute <a href=\"https://www.loginradius.com/blog/engineering/adding-multi-threading-to-javascript-using-web-workers/\">JavaScript independently from the main thread</a>.</p>\n<h2 id=\"concurrency-or-parallelism-which-one-is-better\" style=\"position:relative;\"><a href=\"#concurrency-or-parallelism-which-one-is-better\" aria-label=\"concurrency or parallelism which one is better permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Concurrency or Parallelism which one is better?</h2>\n<p>So we've established that multiple chefs can get a kitchen to produce multiple dishes in the same amount of time as a single dish from a kitchen with a single chef. Modern hardware almost always has multiple threads, so why isn't all code run in parallel? If it takes one chef 10 minutes to prepare one stir-fry and five chefs 10 minutes to prepare five stir-fries, can five chefs produce one stir-fry in 2 minutes? This is where parallel computation can get difficult. </p>\n<p>Tasks can speed up by distributing the workload onto multiple threads. However, this requires splitting up the workload in a way that can work independently and effectively. Think of how five chefs would prepare a single stir fry together:</p>\n<ul>\n<li>For tasks like chopping up vegetables, spreading the workload would be simple.</li>\n<li>Tasks requiring the composition of ingredients would be a bottleneck. No matter how fast an individual can finish his prep of ingredients, they would have to wait until the other ingredients are ready before they can start. Certain tasks would not need all the chefs, and the rest would either stand idly by or be dismissed for doing other tasks. Requisitioning and dismissing chefs cost time and money. It may not be efficient only to call them up when they are needed.</li>\n<li>Have you tried managing five people? Planning would take additional time as each team member should have clear instructions and any clarifications. They might need to spend extra time communicating with each chef as they prepared each portion of the recipe.</li>\n</ul>\n<p>Similarly, on the computing side, parallel programming solutions are generally harder to implement and debug. Depending on the task, they can sometimes even perform worse than serially run counterparts due to the various costs of overhead (transferring data between threads, creating and destroying threads, synchronization of work, etc.).</p>\n<h3 id=\"conclusion\" style=\"position:relative;\"><a href=\"#conclusion\" aria-label=\"conclusion permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Conclusion</h3>\n<p>To conclude this post, neither are inherently superior to the other. Both execution models are useful tools for producing efficient and reliable solutions and are used together in many cases. I hope this helps to clear up the differences between the two, or if not, at least provided a mildly entertaining analogy to illustrate each.</p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"February 19, 2021","updated_date":null,"description":"Concurrence and parallelism in relation to multithreaded applications are two concepts sometimes used. The distinction between concurrency and parallelism is clarified in this tutorial.","title":"Concurrency vs Parallelism: What's the Difference?","tags":["Concurrency","Parallelism","Multithreading","JavaScript"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/c1592330a691b94decfefeb2601f55b9/58556/unsplash.webp","srcSet":"/static/c1592330a691b94decfefeb2601f55b9/61e93/unsplash.webp 200w,\n/static/c1592330a691b94decfefeb2601f55b9/1f5c5/unsplash.webp 400w,\n/static/c1592330a691b94decfefeb2601f55b9/58556/unsplash.webp 800w,\n/static/c1592330a691b94decfefeb2601f55b9/99238/unsplash.webp 1200w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Nick Chim","github":"nickc95","avatar":null}}}},{"node":{"excerpt":"Today, data breaches have become a significant threat to businesses across the globe.  Therefore, considering the long list of resultant…","fields":{"slug":"/identity/best-practices-business-resilience/"},"html":"<p>Today, data breaches have become a significant threat to businesses across the globe.  Therefore, considering the long list of resultant consequences to be faced as an aftermath, it is crucial for companies to come out the other side of a breach intact.</p>\n<p>The Annual Cybercrime Report  2019 by Cybersecurity Ventures says that these data breaches can cost global businesses around $6 trillion in 2021!</p>\n<p>According to experts, implementing business resilience best practices can help companies overcome issues that come with a data breach.</p>\n<p>So, what is business resiliency? Why is it important for companies? How to implement business resiliency practices during a data breach?</p>\n<p>Read on!</p>\n<h2 id=\"what-are-the-business-impacts-of-a-data-breach\" style=\"position:relative;\"><a href=\"#what-are-the-business-impacts-of-a-data-breach\" aria-label=\"what are the business impacts of a data breach permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What are the Business Impacts of a Data Breach</h2>\n<p>During a data breach, companies’ confidential data are accessed by attackers without permission.  It is not only about sensitive information going out to the wrong hands. These cyber attackers can also hack your database and conduct malicious activities, costing you both money and reputation. </p>\n<p>As per <a href=\"https://www.ibm.com/security/digital-assets/cost-data-breach-report/#/\">Cost of a Data Breach Report 2020</a> by IBM, the global average total cost of a data breach in 2020 was $3.86M. If this situation continues, by 2021, a business is expected to fall victim to a ransomware attack every 11 seconds. </p>\n<p>Now let’s consider some of the negative impacts of data breaches that make companies susceptible to financial and credibility loss.</p>\n<ul>\n<li>\n<p><strong>Finance and revenue loss</strong></p>\n<p>If your company is operating in regions with data protection legislation, you have to pay implied legal fees, regulatory fines, security expenses in case of a data breach.  It can cost you a lot if it is a non-compliant company. All these expenses come in addition to the financial damage you have faced because of revenue loss. </p>\n</li>\n<li>\n<p><strong>Brand’s reputation</strong></p>\n<p>According to 71% of CMOs, the most consequential cost of a company’s security data breach incident is the loss of its brand value. This could in turn affect the company’s reliability, thus having to struggle to find the best candidates, investors, and customers.</p>\n</li>\n<li>\n<p><strong>Consumer trust, retention and turnover</strong></p>\n<p><a href=\"https://www6.thalesgroup.com/2016-data-breaches-customer-loyalty-report-pr\">Seven out of ten consumers</a> believe <a href=\"https://www6.thalesgroup.com/2016-data-breaches-customer-loyalty-report-pr\">it is a company’s responsibility to secure their personal information</a>. So, when there is a data breach, and the consumer’s personal data is hacked, they will quickly lose trust in the business. This can result in losing the most loyal customers, even affecting customer turnover. It could worsen if the company is not ready to accept the responsibility for data breaches.</p>\n</li>\n</ul>\n<p>That’s why today, businesses are more focused on building a better security culture. According to Gartner forecasts, global spending on cybersecurity is expected to reach <a href=\"https://www.gartner.com/en/newsroom/press-releases/2018-08-15-gartner-forecasts-worldwide-information-security-spending-to-exceed-124-billion-in-2019\">$133.7 billion by 2022</a>. </p>\n<p>But, how effectively companies can deal with data breaches, especially in a hyper-connected world?</p>\n<p>To handle a data breach incident and the resulting loss of revenue and trust, every company should have an incident response plan with effective threat modeling. That’s where the idea of business reliance comes into the picture.</p>\n<h2 id=\"what-is-business-resiliency\" style=\"position:relative;\"><a href=\"#what-is-business-resiliency\" aria-label=\"what is business resiliency permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is Business Resiliency</h2>\n<p>Business resilience can be defined as a business’ ability to quickly adapt and respond to impending risks or disruptions. More like a combination of crisis management and business continuity strategies post-disaster. </p>\n<h2 id=\"why-is-business-resiliency-important-for-an-organization\" style=\"position:relative;\"><a href=\"#why-is-business-resiliency-important-for-an-organization\" aria-label=\"why is business resiliency important for an organization permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Why is Business Resiliency Important for an Organization</h2>\n<p>Business resilience has become an essential part of the business. Why? Because it saves businesses with its potential for higher recovery. </p>\n<p>Consider the unforeseen disasters, shifting market demands, and changing regulatory terms in today’s business world. In addition to these, there will be IT disruptions, sudden competitive movements, security threats like data breaches, etc. too. In order to survive all these unpredictable disruptions, businesses should achieve resilience at all means. </p>\n<p>For example, take a look at how businesses worldwide were affected by the COVID-19 pandemic. Only those organizations with <a href=\"https://www.mckinsey.com/business-functions/organization/our-insights/an-operating-model-for-the-next-normal-lessons-from-agile-organizations-in-the-crisis\">agile business resilience</a> planning were able to adapt and survive the COVID-19 challenges successfully. By adapting quickly to shifting business priorities, they are ready for the ‘new normal’ in the business battlefield.</p>\n<p>On the other side, business resilience best practices will assure that all your business activities comply with the latest industry standards and regulations. This will, in turn, improve your reliability, brand value, and reputation, especially in front of your stakeholders and customers. The resilience plans will also act as a blueprint of all your operations, giving you a head start. </p>\n<p>This can even cultivate a resilient organizational culture. It makes the whole business, including employees, quickly adapt to unforeseen challenges whenever the business operations or processes go awry. Or under threat like a data breach.</p>\n<p><a href=\"https://www.loginradius.com/resource/pii-data-breach-report/\"><img src=\"/50eb35550996efd860854fef81a6360e/protecting-pii-against-data-breaches.webp\" alt=\"protecting-pii-against-data-breaches\"></a></p>\n<h2 id=\"5-best-practices-of-implementing-business-resiliency-during-a-data-breach\" style=\"position:relative;\"><a href=\"#5-best-practices-of-implementing-business-resiliency-during-a-data-breach\" aria-label=\"5 best practices of implementing business resiliency during a data breach permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>5 Best Practices of Implementing Business Resiliency during a Data Breach</h2>\n<p>So, to overcome the after-effects of a data breach in your business, it is important to implement a business resiliency. </p>\n<p>How? We are going to see the best practices of implementing business resilience under a data breach occurrence:</p>\n<p><strong>1. Design a strong business resilience plan</strong></p>\n<p>Develop a reliable, self-healing, resilience easy to manage architecture. It should be designed in such a way that the business can access all its components during a data breach. </p>\n<p>A native high-availability clustering is needed. Because no matter how well you have come up with a crisis management and continuity plan, it will be of no use if it’s not available on demand.  </p>\n<p>So, it should be able to deploy quickly, with <a href=\"https://www.loginradius.com/scalability/\">high scalability and flexibility</a>.</p>\n<p><strong>2. Virtual Desktop Infrastructure (VDI)</strong></p>\n<p>Business resilience usually includes detailed planning and solutions to be implemented whenever an unexpected situation occurs, like a data breach. For this, companies use data centers, backups, and server virtualization. An example of this is the VDI. </p>\n<p>VDI makes sure that all the data is stored and accessed in the data center, not on the user’s device. This will eliminate the chances of <a href=\"https://www.loginradius.com/blog/identity/2019/01/how-do-i-know-if-my-email-has-been-leaked-in-a-data-breach/\">data being leaked</a> in case the device is stolen.</p>\n<p><strong>3. Ransomware protection</strong></p>\n<p>According to <a href=\"https://purplesec.us/resources/cyber-security-statistics/ransomware/\">Purplesec</a> 85% of security service providers, ransomware is one of the most common threats for small businesses. </p>\n<p>So, for ransomware protection and recovery as a part of business resilience during a data breach, you can make use of the following practices:</p>\n<ul>\n<li>Use a multi-faceted security solution</li>\n<li>Employ effective backup strategies like keeping a copy of the data </li>\n<li>Implement endpoint protection best practices and train the workforce to handle it </li>\n</ul>\n<p><strong>4. Personnel, training, and expertise</strong></p>\n<p>In the event of a data breach, the employees must have the required expertise for successfully executing the business resilience plans on time. </p>\n<p>To achieve this, there is a need for cross-training sections to be conducted. Some companies often choose to outsource all their IT operations to third-party service providers or consultants.</p>\n<p>But it is also important to have a good plan for survival, in case experts and trained personnel too are affected by the data breach disaster. </p>\n<p><strong>5. Creating a Disaster Recovery (DR) plan</strong></p>\n<p>During data breaches, businesses should come up with a plan to put the affected critical business systems back online as quickly as possible. This is important to avoid further damages. </p>\n<p>One of the best practices is to launch a secondary site as a stand-in for the primary data center.</p>\n<p>This Disaster Recovery (DR) site should have the following attributes:</p>\n<ul>\n<li>It should be geographically distant from the primary site</li>\n<li>Must have sufficient computing resources for handling\ncritical workload</li>\n<li>It should be easily manageable by the hosting provider. </li>\n</ul>\n<p>When a DR site is launched, the networking connectivity must be restored with the aid of IP address redirects or gateways. This way, the users can reconnect without changing their default settings. And it will be easier in the future to redirect them back to the primary data center when it is recovered.</p>\n<h2 id=\"conclusion\" style=\"position:relative;\"><a href=\"#conclusion\" aria-label=\"conclusion permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Conclusion</h2>\n<p>A standard business resilience plan in the need of the hour. A recent study shows that the number of data breaches in 2020 almost doubled compared to that in 2019. The <a href=\"https://www.capita.com/sites/g/files/nginej146/files/2020-08/Ponemon-Global-Cost-of-Data-Breach-Study-2020.pdf\">average total cost of data breaches </a>in 2020 was $3.86 million. And it is expected to increase in the coming future too.</p>\n<p>So, it is important to implement fail-proof business resilience practices in your business to survive unexpected data breaches.</p>\n<p><a href=\"https://www.loginradius.com/contact-us\"><img src=\"/8fce571f703a5970dbb1359a2fe0e51a/book-a-demo-loginradius.webp\" alt=\"LoginRadius Book a Demo\"></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"February 18, 2021","updated_date":null,"description":"Business resilience can be defined as a business’ ability to quickly adapt and respond to impending risks or disruptions. More like a combination of crisis management and business continuity strategies post-disaster.","title":"5 Best Practices of Implementing Business Resilience during a Data Breach","tags":["data security","resiliency","cx"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.6666666666666667,"src":"/static/6de8a6789dd41cd47df325d36d36fe65/58556/business-resilience.webp","srcSet":"/static/6de8a6789dd41cd47df325d36d36fe65/61e93/business-resilience.webp 200w,\n/static/6de8a6789dd41cd47df325d36d36fe65/1f5c5/business-resilience.webp 400w,\n/static/6de8a6789dd41cd47df325d36d36fe65/58556/business-resilience.webp 800w,\n/static/6de8a6789dd41cd47df325d36d36fe65/cc834/business-resilience.webp 1024w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.webp"}}}},{"node":{"excerpt":"Git is an important part of daily programming and is commonly used in the software industry. Since you can use a lot of different commands…","fields":{"slug":"/engineering/git-commands/"},"html":"<p>Git is an important part of daily programming and is commonly used in the software industry. Since you can use a lot of different commands, mastering Git needs time. But some commands are more commonly used. So I'm going to share the most useful Git commands in this post that every developer should know.</p>\n<p>But first you need to know the <a href=\"https://www.loginradius.com/blog/engineering/github-api/\">fundamentals of Git</a> to understand this article.</p>\n<h1 id=\"useful-git-commands-list\" style=\"position:relative;\"><a href=\"#useful-git-commands-list\" aria-label=\"useful git commands list permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Useful Git Commands List</h1>\n<table>\n<thead>\n<tr>\n<th>Command</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>git init</code></td>\n<td>Initialize a local Git repository</td>\n</tr>\n<tr>\n<td><code>git clone repo_url</code></td>\n<td>Clone public repository</td>\n</tr>\n<tr>\n<td><code>git clone ssh://git@github.com/[username]/[repository-name].git</code></td>\n<td>Clone private repository</td>\n</tr>\n<tr>\n<td><code>git status</code></td>\n<td>Check status</td>\n</tr>\n<tr>\n<td><code>git add [file-name]</code></td>\n<td>Add a file to the staging area</td>\n</tr>\n<tr>\n<td><code>git add -A</code></td>\n<td>Add all new and changed files to the staging area</td>\n</tr>\n<tr>\n<td><code>git commit -m \"[commit message]\"</code></td>\n<td>Commit changes</td>\n</tr>\n<tr>\n<td><code>git rm -r [file-name.txt]</code></td>\n<td>Remove a file (or folder)</td>\n</tr>\n<tr>\n<td><code>git branch</code></td>\n<td>List of branches (the asterisk denotes the current branch)</td>\n</tr>\n<tr>\n<td><code>git branch -a</code></td>\n<td>List all branches (local and remote)</td>\n</tr>\n<tr>\n<td><code>git branch [branch name]</code></td>\n<td>Create a new branch</td>\n</tr>\n<tr>\n<td><code>git branch -d [branch name]</code></td>\n<td>Delete a branch</td>\n</tr>\n<tr>\n<td><code>git branch -D [branch name]</code></td>\n<td>Delete a branch forcefully</td>\n</tr>\n<tr>\n<td><code>git push origin --delete [branch name]</code></td>\n<td>Delete a remote branch</td>\n</tr>\n<tr>\n<td><code>git checkout -b [branch name]</code></td>\n<td>Create a new branch and switch to it</td>\n</tr>\n<tr>\n<td><code>git checkout -b [branch name] origin/[branch name]</code></td>\n<td>Clone a remote branch and switch to it</td>\n</tr>\n<tr>\n<td><code>git branch -m [old branch name] [new branch name]</code></td>\n<td>Rename a local branch</td>\n</tr>\n<tr>\n<td><code>git checkout [branch name]</code></td>\n<td>Switch to a branch</td>\n</tr>\n<tr>\n<td><code>git checkout -</code></td>\n<td>Switch to the branch last checked out</td>\n</tr>\n<tr>\n<td><code>git checkout -- [file-name.txt]</code></td>\n<td>Discard changes to a file</td>\n</tr>\n<tr>\n<td><code>git merge [branch name]</code></td>\n<td>Merge a branch into the active branch</td>\n</tr>\n<tr>\n<td><code>git merge [source branch] [target branch]</code></td>\n<td>Merge a branch into a target branch</td>\n</tr>\n<tr>\n<td><code>git stash</code></td>\n<td>Stash changes in a dirty working directory</td>\n</tr>\n<tr>\n<td><code>git stash clear</code></td>\n<td>Remove all stashed entries</td>\n</tr>\n<tr>\n<td><code>git push origin [branch name]</code></td>\n<td>Push a branch to your remote repository</td>\n</tr>\n<tr>\n<td><code>git push -u origin [branch name]</code></td>\n<td>Push changes to remote repository (and remember the branch)</td>\n</tr>\n<tr>\n<td><code>git push</code></td>\n<td>Push changes to remote repository (remembered branch)</td>\n</tr>\n<tr>\n<td><code>git push origin --delete [branch name]</code></td>\n<td>Delete a remote branch</td>\n</tr>\n<tr>\n<td><code>git pull</code></td>\n<td>Update local repository to the newest commit</td>\n</tr>\n<tr>\n<td><code>git pull origin [branch name]</code></td>\n<td>Pull changes from remote repository</td>\n</tr>\n<tr>\n<td><code>git remote add origin ssh://git@github.com/[username]/[repository-name].git</code></td>\n<td>Add a remote repository</td>\n</tr>\n<tr>\n<td><code>git remote set-url origin ssh://git@github.com/[username]/[repository-name].git</code></td>\n<td>Set a repository's origin branch to SSH</td>\n</tr>\n<tr>\n<td><code>git log</code></td>\n<td>View changes</td>\n</tr>\n<tr>\n<td><code>git log --summary</code></td>\n<td>View changes (detailed)</td>\n</tr>\n<tr>\n<td><code>git log --oneline</code></td>\n<td>View changes (briefly)</td>\n</tr>\n<tr>\n<td><code>git diff [source branch] [target branch]</code></td>\n<td>Preview changes before merging</td>\n</tr>\n<tr>\n<td><code>git revert commitid</code></td>\n<td>Revert commit changes</td>\n</tr>\n<tr>\n<td><code>git config --global user.name \"your_username\"</code></td>\n<td>Set globally Username</td>\n</tr>\n<tr>\n<td><code>git config --global user.email \"your_email_address@example.com\"</code></td>\n<td>Set globally Email id</td>\n</tr>\n<tr>\n<td><code>git config --global --list</code></td>\n<td>Get global config</td>\n</tr>\n</tbody>\n</table>\n<p>So these are the most helpful git commands I find in my everyday programming. There are several more things to learn about Git, I will explain them in a separate post.</p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"February 17, 2021","updated_date":null,"description":"In this article, I will talk about the Git Commands that you will be using often when you are working with Git.","title":"35+ Git Commands List Every Programmer Should Know","tags":["GIT"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/809159647d5b83fd76f6bc5ef35bab91/58556/git.webp","srcSet":"/static/809159647d5b83fd76f6bc5ef35bab91/61e93/git.webp 200w,\n/static/809159647d5b83fd76f6bc5ef35bab91/1f5c5/git.webp 400w,\n/static/809159647d5b83fd76f6bc5ef35bab91/58556/git.webp 800w,\n/static/809159647d5b83fd76f6bc5ef35bab91/99238/git.webp 1200w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Abhimanyu Singh Rathore","github":"abhir9","avatar":null}}}},{"node":{"excerpt":"Introduction No matter what online platforms or applications you use, you are never fully protected against cyberattacks. Statistics provide…","fields":{"slug":"/identity/what-is-broken-authentication/"},"html":"<h2 id=\"introduction\" style=\"position:relative;\"><a href=\"#introduction\" aria-label=\"introduction permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Introduction</h2>\n<p>No matter what online platforms or applications you use, you are never fully protected against cyberattacks.</p>\n<p>Statistics provide testimony to this fact as the number of <a href=\"https://www.theweek.in/news/biz-tech/2020/11/17/india-sees-37-increase-in-data-breaches-cyber-attacks-this-year.html#:~:text=Data%20breaches%20have%20shown%20a,of%202020%20compared%20to%202019.&#x26;text=%E2%80%9CIn%20India%2C%20data%20breaches%20have,breaches%20are%20invariably%20not%20reported.\">data breaches rose by 37% in 2020 </a>compared to 2019, and the trend is only increasing. </p>\n<p>The first step to protect your organization against such attacks is to have a comprehensive understanding of the issue.</p>\n<p>Let us begin by figuring out what is broken authentication.</p>\n<p>Very simply put, when the hacker gains access into the system admin's account by using the online platform's vulnerabilities, particularly in two areas: credential management and session management, it's referred to as broken authentication.</p>\n<p>Authentication protects a consumer's identity by allowing only a verified user to enter into the system. But there are numerous ways through which the hacker impersonates the consumer and enters inside the system. </p>\n<p>The weaknesses inherent in the system, as mentioned above, can be divided into two different groups, namely poor credential management and poor session management.  </p>\n<h2 id=\"what-is-broken-authentication-and-session-management\" style=\"position:relative;\"><a href=\"#what-is-broken-authentication-and-session-management\" aria-label=\"what is broken authentication and session management permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is Broken Authentication and Session Management?</h2>\n<p>Broken Authentication and Session Management is a security vulnerability that occurs when the authentication and session management mechanisms of a web application are flawed or improperly implemented.</p>\n<p>Authentication refers to the process of verifying the identity of users, typically through usernames and passwords, while session management involves maintaining and controlling the user's session after authentication. </p>\n<p>When these mechanisms are compromised or misconfigured, attackers can exploit the vulnerabilities to gain unauthorized access to user accounts, impersonate other users, or hijack sessions. This can lead to severe security breaches and expose sensitive user information.</p>\n<h2 id=\"what-are-the-risks-of-broken-authentication\" style=\"position:relative;\"><a href=\"#what-are-the-risks-of-broken-authentication\" aria-label=\"what are the risks of broken authentication permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What are the Risks of Broken Authentication?</h2>\n<p>The risks associated with broken authentication are profound and can have detrimental effects on individuals and organizations:</p>\n<h3 id=\"unauthorized-access-to-sensitive-information\" style=\"position:relative;\"><a href=\"#unauthorized-access-to-sensitive-information\" aria-label=\"unauthorized access to sensitive information permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Unauthorized Access to Sensitive Information</h3>\n<p>When attackers exploit broken authentication vulnerabilities, they can gain access to sensitive data such as personal information, financial details, or intellectual property. This unauthorized access can lead to data breaches and privacy violations.</p>\n<h3 id=\"manipulation-or-deletion-of-user-data\" style=\"position:relative;\"><a href=\"#manipulation-or-deletion-of-user-data\" aria-label=\"manipulation or deletion of user data permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Manipulation or Deletion of User Data</h3>\n<p>Once inside the system, attackers can manipulate or delete user data, causing disruptions to services, loss of important information, and potential legal ramifications.</p>\n<h3 id=\"impersonation-of-legitimate-users\" style=\"position:relative;\"><a href=\"#impersonation-of-legitimate-users\" aria-label=\"impersonation of legitimate users permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Impersonation of Legitimate Users</h3>\n<p>By hijacking user sessions or impersonating legitimate users, attackers can carry out fraudulent activities on behalf of the compromised accounts. This could include fraudulent transactions, spreading misinformation, or performing actions that tarnish the reputation of the affected individuals or organizations.</p>\n<h3 id=\"escalation-of-privileges\" style=\"position:relative;\"><a href=\"#escalation-of-privileges\" aria-label=\"escalation of privileges permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Escalation of Privileges</h3>\n<p>If the compromised account belongs to an administrator or privileged user, attackers can escalate their privileges within the application. This can lead to complete system compromise and greater control over critical functions.</p>\n<h3 id=\"financial-losses-and-legal-consequences\" style=\"position:relative;\"><a href=\"#financial-losses-and-legal-consequences\" aria-label=\"financial losses and legal consequences permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Financial Losses and Legal Consequences</h3>\n<p>The aftermath of a broken authentication attack can result in financial losses for businesses, especially if customer trust is compromised. Moreover, organizations may face legal consequences for failing to protect user data adequately.</p>\n<h2 id=\"how-to-prevent-broken-authentication\" style=\"position:relative;\"><a href=\"#how-to-prevent-broken-authentication\" aria-label=\"how to prevent broken authentication permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How to Prevent Broken Authentication?</h2>\n<p>Preventing broken authentication requires a multifaceted approach that addresses vulnerabilities at various stages of the authentication and session management processes. Here are some effective strategies:</p>\n<h3 id=\"1-implement-multi-factor-authentication-mfa\" style=\"position:relative;\"><a href=\"#1-implement-multi-factor-authentication-mfa\" aria-label=\"1 implement multi factor authentication mfa permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. Implement Multi-Factor Authentication (MFA)</h3>\n<ul>\n<li>MFA adds an extra layer of security by requiring users to provide two or more forms of verification. This could include a one-time password (OTP) sent via email or SMS, a biometric scan, or a hardware token.</li>\n<li>MFA mitigates the risks of brute-force attacks, credential stuffing, and stolen credential reuse.</li>\n</ul>\n<h3 id=\"2-enforce-strong-password-policies\" style=\"position:relative;\"><a href=\"#2-enforce-strong-password-policies\" aria-label=\"2 enforce strong password policies permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. Enforce Strong Password Policies</h3>\n<ul>\n<li>Require users to create strong passwords that include a mix of lowercase and uppercase letters, numbers, and special characters.</li>\n<li>Follow industry standards such as NIST 800-63 B's guidelines for memorized secrets.</li>\n<li>Regularly educate users on the importance of creating unique and robust passwords.</li>\n</ul>\n<h3 id=\"3-limit-failed-login-attempts\" style=\"position:relative;\"><a href=\"#3-limit-failed-login-attempts\" aria-label=\"3 limit failed login attempts permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. Limit Failed Login Attempts</h3>\n<ul>\n<li>Implement a system that locks out user accounts after a specified number of failed login attempts (e.g., 3 or 5).</li>\n<li>Notify system administrators of potential brute-force attacks or suspicious login activity.</li>\n</ul>\n<h3 id=\"4-secure-session-management\" style=\"position:relative;\"><a href=\"#4-secure-session-management\" aria-label=\"4 secure session management permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. Secure Session Management</h3>\n<ul>\n<li>Generate new, random session IDs with high entropy after each login.</li>\n<li>Ensure that session IDs are not exposed in URLs and are invalidated after users log out.</li>\n<li>Implement proper session expiration policies to prevent sessions from remaining active indefinitely.</li>\n</ul>\n<h3 id=\"5-secure-credential-management\" style=\"position:relative;\"><a href=\"#5-secure-credential-management\" aria-label=\"5 secure credential management permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>5. Secure Credential Management</h3>\n<ul>\n<li>Store user credentials securely using strong hashing algorithms such as bcrypt or Argon2.</li>\n<li>Avoid storing passwords in plain text or using weak encryption methods like base64.</li>\n<li>Implement salted hashing to make password cracking more challenging, even if multiple users have the same password.</li>\n</ul>\n<h3 id=\"6-regular-security-audits-and-updates\" style=\"position:relative;\"><a href=\"#6-regular-security-audits-and-updates\" aria-label=\"6 regular security audits and updates permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>6. Regular Security Audits and Updates</h3>\n<ul>\n<li>Conduct regular security audits to identify and address vulnerabilities in the authentication process.</li>\n<li>Stay up-to-date with security patches and updates for the web application and underlying frameworks.</li>\n</ul>\n<h2 id=\"what-are-some-examples-of-broken-authentication-vulnerability\" style=\"position:relative;\"><a href=\"#what-are-some-examples-of-broken-authentication-vulnerability\" aria-label=\"what are some examples of broken authentication vulnerability permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What are Some Examples of Broken Authentication Vulnerability?</h2>\n<p>There are several examples of broken authentication vulnerability that highlight the potential risks. One common example is weak or easily guessable passwords, such as \"123456\" or \"password,\" which can be exploited by attackers.</p>\n<p>Another example is the lack of proper session expiration, where user sessions remain active even after a user logs out, allowing an attacker to reuse the session and gain unauthorized access. </p>\n<p>Additionally, if an application does not implement measures to prevent brute-force attacks, attackers can repeatedly guess usernames and passwords until they find a valid combination. Inadequate protection against account lockouts, session hijacking, or session fixation are also examples of broken authentication vulnerabilities.</p>\n<h2 id=\"what-scenarios-can-cause-broken-authentication\" style=\"position:relative;\"><a href=\"#what-scenarios-can-cause-broken-authentication\" aria-label=\"what scenarios can cause broken authentication permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What Scenarios Can Cause Broken Authentication?</h2>\n<p>As mentioned earlier, the primary reasons for broken authentication. Let’s understand them one by one.</p>\n<h3 id=\"1-poor-credential-management\" style=\"position:relative;\"><a href=\"#1-poor-credential-management\" aria-label=\"1 poor credential management permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. Poor credential management</h3>\n<p>Consumer credentials can be hijacked to gain access to the system. There are various ways that the hacker can steal critical information, such as the following:</p>\n<ul>\n<li><strong>Weak passwords</strong>: The consumer creates a weak password like '12345' or 'pass123'. The hacker can use various password cracking techniques like rainbow tables and dictionaries to gain access to the system.</li>\n<li><strong>Weak cryptography</strong>: Using weak encryption techniques like base64 and weak hashing algorithms like SHA1 and MD5 make credentials vulnerable. Which is why they must be stored using strong hashing algorithms that make password cracking challenging. </li>\n</ul>\n<h3 id=\"2-poor-session-management\" style=\"position:relative;\"><a href=\"#2-poor-session-management\" aria-label=\"2 poor session management permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. Poor session management</h3>\n<p>Let’s assume you like playing online games. You log in to the application and make several interactions with the network. </p>\n<p>The application issues a session ID whenever you log in and records all your interactions. It is through this ID that the application communicates with you and responds to all your requests. </p>\n<p>The <a href=\"https://owasp.org/www-project-top-ten/2017/A2_2017-Broken_Authentication\">OWASP broken authentication</a> recommendations state that this session ID is equivalent to your original login credentials. If hackers steal your session ID, they can sign in by impersonating your identity. This is known as session hijacking.  </p>\n<p>The following points list the scenarios that can cause broken authentication.</p>\n<ul>\n<li>Weak usernames and passwords.</li>\n<li>Session fixation attacks.</li>\n<li>URL rewriting.</li>\n<li>Consumer identity details aren't protected when stored.</li>\n<li>Consumer identity details are transferred over unencrypted connections.</li>\n</ul>\n<h2 id=\"what-is-the-impact-of-broken-authentication-and-session-management\" style=\"position:relative;\"><a href=\"#what-is-the-impact-of-broken-authentication-and-session-management\" aria-label=\"what is the impact of broken authentication and session management permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is the Impact of Broken Authentication and Session Management?</h2>\n<p>If a hacker successfully logs in by stealing your credentials using any of the above mentioned broken authentication techniques, they can misuse your privileges and impact your company's sustainability. </p>\n<p>Cybercriminals can have various intentions of <a href=\"https://www.loginradius.com/blog/identity/2021/01/7-web-app-sec-threats/\">hijacking your web application</a>, such as:</p>\n<ul>\n<li>Stealing critical business data</li>\n<li>Identity theft</li>\n<li>Sending fraud calls or emails.</li>\n<li>Creating malicious software programs for disrupting networks.</li>\n<li>Cyber terrorism</li>\n<li>Cyberstalking</li>\n<li>Selling illegal items on the dark web</li>\n<li>Sharing fake news on social media</li>\n</ul>\n<p>In short, hackers can use broken authentication attacks and session hijacking to gain access to the system by forging session data, such as cookies, and stealing login credentials. </p>\n<p>Thus, it would be best if you never compromised with your web applications' security. </p>\n<h3 id=\"a-few-examples-of-broken-authentication\" style=\"position:relative;\"><a href=\"#a-few-examples-of-broken-authentication\" aria-label=\"a few examples of broken authentication permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>A Few Examples of Broken Authentication</h3>\n<p>Here are a few examples of broken authentication.</p>\n<h4 id=\"example-1-credential-stuffing\" style=\"position:relative;\"><a href=\"#example-1-credential-stuffing\" aria-label=\"example 1 credential stuffing permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Example 1: Credential Stuffing</h4>\n<p>Suppose you run a departmental store and sell groceries. To grow your business rapidly, you implement a CRM system that stores critical customer data, such as name, phone number, username, and password. </p>\n<p>Hackers make their way inside the CRM system and steal all the data. They then use the same credentials — usernames and passwords — to hack into the central bank's database. </p>\n<p>In this case, hackers are trying to successfully log in to the central bank's database by hoping that a handful of consumers must be using the same credentials at both places. Such kinds of broken authentication attacks are called <a href=\"https://www.loginradius.com/blog/identity/2019/09/prevent-credential-stuffing-attacks/\">credential stuffing</a>.</p>\n<h4 id=\"example-2-application-session-timeouts-arent-set-properly\" style=\"position:relative;\"><a href=\"#example-2-application-session-timeouts-arent-set-properly\" aria-label=\"example 2 application session timeouts arent set properly permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Example 2: Application session timeouts aren't set properly.</h4>\n<p>Suppose you go to a cyber cafe and login your Gmail account. After sending the email, you close the browser tab and return home. </p>\n<p>Sometime later, the hacker opens your Gmail account and gains access to your crucial information. It happens because your credentials — username and password — haven't been invalidated adequately during logout. </p>\n<p>Thus, if the application session timeouts aren't set properly, hackers can execute a broken authentication attack.</p>\n<p><a href=\"https://www.loginradius.com/resource/ebook/buyers-guide-to-multi-factor-authentication/\"><img src=\"/6189ed241659d7be186ca0c44dd9e974/buyer-guide-to-multi-factor-authentication-ebook.webp\" alt=\"buyer-guide-to-multi-factor-authentication-ebook\"></a></p>\n<h4 id=\"example-3-passwords-are-not-properly-hashed-and-salted\" style=\"position:relative;\"><a href=\"#example-3-passwords-are-not-properly-hashed-and-salted\" aria-label=\"example 3 passwords are not properly hashed and salted permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Example 3: Passwords are not properly hashed and salted.</h4>\n<p>Look at the names and their hashes in the following table:</p>\n<table>\n  <tr>\n   <td>Alice\n   </td>\n   <td>4420d1918bbcf7686defdf9560bb5087d20076de5f77b7cb4c3b40bf46ec428b\n   </td>\n  </tr>\n  <tr>\n   <td>Bob\n   </td>\n   <td>4420d1918bbcf7686defdf9560bb5087d20076de5f77b7cb4c3b40bf46ec428b\n   </td>\n  </tr>\n  <tr>\n   <td>Mike\n   </td>\n   <td>77b177de23f81d37b5b4495046b227befa4546db63cfe6fe541fc4c3cd216eb9\n   </td>\n  </tr>\n</table>\n<p>The hash function stores passwords in the form of a hash instead of plain text, which humans can easily read. But if two different users enter the same password, then their hashes will be exactly the same. </p>\n<p>Hackers can perform a dictionary attack and if they crack one password, they can use the same password for gaining access to other accounts that use the same hash. </p>\n<p>To prevent this from happening, you must salt the passwords. A salt is a random value that is either appended or prepended to the password and makes it unique. So even if two different users use the same password, their hashes will not be the same. </p>\n<h2 id=\"how-to-prevent-broken-authentication-1\" style=\"position:relative;\"><a href=\"#how-to-prevent-broken-authentication-1\" aria-label=\"how to prevent broken authentication 1 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How to Prevent Broken Authentication?</h2>\n<p>The following are the ways of preventing broken authentication attacks:</p>\n<ol>\n<li>Implement <a href=\"https://www.loginradius.com/blog/identity/2019/06/what-is-multi-factor-authentication/\">multi-factor authentication (MFA) </a>to verify the consumer's identity. Examples include One-Time Password (OTP) messaged or emailed to the user. This step will prevent brute force attacks, credential stuffing, and stolen credential reuse attacks.</li>\n<li>Use weak-password checks by forcing users to include a mix of small letters, capital letters, alphanumeric symbols, and special characters while creating passwords. It would be best to follow <a href=\"https://pages.nist.gov/800-63-3/sp800-63b.html\">NIST 800-63 B's guidelines</a> in section 5.1.1 for memorized secrets.</li>\n<li>Place a limit on failed login attempts to 3 or a maximum of 5. Alert the system admin if you detect an attack — brute force, credential stuffing, or any other attack.</li>\n<li>Ensure that credential recovery, registration, and API pathways are not vulnerable to account enumeration attacks by using the same message for each outcome. </li>\n<li>Generating new random session IDs with high entropy after <a href=\"https://www.loginradius.com/blog/identity/2020/12/login-security/\">login protects against hackers</a>. Remember, those session IDs should not be present in the URL and invalidated after logout.</li>\n</ol>\n<h2 id=\"impact-of-broken-authentication\" style=\"position:relative;\"><a href=\"#impact-of-broken-authentication\" aria-label=\"impact of broken authentication permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Impact of Broken Authentication</h2>\n<p>The impact of broken authentication can be severe and far-reaching. When attackers successfully exploit these vulnerabilities, they can gain unauthorized access to user accounts, leading to various consequences. </p>\n<p>This may include unauthorized access to sensitive information, such as personal data, financial details, or intellectual property. Attackers can also manipulate or delete user data, impersonate legitimate users, perform fraudulent transactions, or even escalate their privileges within the application.</p>\n<p>Furthermore, if the compromised account belongs to an administrator or privileged user, the impact can be even more significant, potentially compromising the entire system or network. Broken authentication vulnerabilities can tarnish an organization's reputation, result in financial losses, and expose users to identity theft and other cybercrimes.</p>\n<h2 id=\"how-loginradius-protects-against-broken-authentication\" style=\"position:relative;\"><a href=\"#how-loginradius-protects-against-broken-authentication\" aria-label=\"how loginradius protects against broken authentication permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How LoginRadius Protects Against Broken Authentication?</h2>\n<p>LoginRadius has been at the forefront of offering a multilevel security web app environment. Here is how LoginRadius applications protect against broken authentication:</p>\n<ul>\n<li>End-to-end SSL encryption for data in transit and ensures protection against unauthorized access. </li>\n<li>Multi-factor authentication to eliminate the risk of being exposed to attacks.</li>\n<li>One-way hashing of passwords considerably improves consumer security.</li>\n<li>Single sign-on (SSO) solution allows users to use the same profile to log in everywhere.</li>\n</ul>\n<h2 id=\"conclusion\" style=\"position:relative;\"><a href=\"#conclusion\" aria-label=\"conclusion permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Conclusion</h2>\n<p>Apart from the steps mentioned in this article, it's essential to train and educate your employees about broken authentication attacks. It would be best if you also employed <a href=\"https://www.loginradius.com/blog/identity/2019/10/cybersecurity-best-practices-for-enterprises/\">top-notch cybersecurity measures</a> to protect your company's database from session hijacking, credential stuffing, and other broken authentication attacks. </p>\n<h2 id=\"faqs\" style=\"position:relative;\"><a href=\"#faqs\" aria-label=\"faqs permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>FAQs</h2>\n<p><strong>1. What are the solutions for broken authentication?</strong></p>\n<p> Solutions include implementing Multi-Factor Authentication (MFA), enforcing strong password policies, limiting failed login attempts, securing session management, and regular security audits.</p>\n<p><strong>2.  What is broken access authentication?</strong></p>\n<p> Broken access authentication refers to vulnerabilities in the authentication process that allow unauthorized access to user accounts, often due to flawed or improperly implemented authentication mechanisms.</p>\n<p><strong>3. What can prevent authentication failures?</strong></p>\n<p>Preventative measures include MFA implementation, enforcing strong password policies, limiting failed login attempts, securing session management, and using secure hashing algorithms.</p>\n<p><strong>4. What is a broken authentication guessable password?</strong></p>\n<p>It refers to weak or easily guessed passwords like \"123456\" or \"password,\" which are vulnerable to exploitation by attackers, leading to compromised accounts.</p>\n<p><strong>5. What are the risks of broken authentication?</strong></p>\n<p>Risks include unauthorized access to sensitive data, manipulation or deletion of user data, impersonation of legitimate users, escalation of privileges, financial losses, and legal consequences.</p>\n<p><strong>6. What are the effects of broken authentication attacks?</strong></p>\n<p>Effects include data breaches, privacy violations, fraudulent activities on compromised accounts, tarnished reputation for individuals or organizations, financial losses, and potential legal ramifications.</p>\n<p><a href=\"https://www.loginradius.com/contact-us?utm_source=blog&#x26;utm_medium=web&#x26;utm_campaign=what-is-broken-authentication\"><img src=\"/8fce571f703a5970dbb1359a2fe0e51a/book-a-demo-loginradius.webp\" alt=\"LoginRadius Book a Demo\"></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"February 17, 2021","updated_date":null,"description":"If a hacker successfully logs with stolen credentials, they can misuse your privileges and impact your company's sustainability. Authentication protects a consumer's identity by allowing only a verified user to enter into the system. But there are numerous ways through which a hacker can impersonate consumers and enter inside the system.","title":"What is Broken Authentication Vulnerability and How to Prevent It?","tags":["broken authentication","mfa","data security"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/8fb0491d4b2d2c88a9837287c83195f7/7f8e9/broken-auth.webp","srcSet":"/static/8fb0491d4b2d2c88a9837287c83195f7/61e93/broken-auth.webp 200w,\n/static/8fb0491d4b2d2c88a9837287c83195f7/1f5c5/broken-auth.webp 400w,\n/static/8fb0491d4b2d2c88a9837287c83195f7/7f8e9/broken-auth.webp 768w","sizes":"(max-width: 768px) 100vw, 768px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.webp"}}}},{"node":{"excerpt":"One of the leading NoSQL databases, MongoDB is well known for its fast performance, versatile schema, scalability and great capabilities for…","fields":{"slug":"/engineering/full-text-search-in-mongodb/"},"html":"<p>One of the leading NoSQL databases, MongoDB is well known for its fast performance, versatile schema, scalability and great <a href=\"https://www.loginradius.com/blog/engineering/index-in-mongodb/\">capabilities for indexing</a>. Let us look at some context before we get into some details. Full-text search is an essential feature when we talk about finding content on the internet. A google search is the best example for this when we see the content using the phrases or keywords. In this article, we will learn about full-text search capabilities in MongoDB based on text index.</p>\n<h2 id=\"create-a-sample-database\" style=\"position:relative;\"><a href=\"#create-a-sample-database\" aria-label=\"create a sample database permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Create a Sample Database</h2>\n<p>Before we begin, we will create a sample database that will be used during the tutorial.</p>\n<p>We will create a database with the name <em>myDB</em> and create a collection with the name <em>books</em>. For this, the statement would be as follows.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"0\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">&gt; use myDB</span>\n<span class=\"grvsc-line\">&gt; db.createCollection(&quot;books&quot;)</span>\n<span class=\"grvsc-line\">&gt;</span></code></pre>\n<p>Let's insert some documents by using the following statement.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"1\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">&gt; db.books.insert([</span>\n<span class=\"grvsc-line\">\t{</span>\n<span class=\"grvsc-line\">      &quot;title&quot;: &quot;Eloquent JavaScript, Second Edition&quot;,</span>\n<span class=\"grvsc-line\">      &quot;subtitle&quot;: &quot;A Modern Introduction to Programming&quot;,</span>\n<span class=\"grvsc-line\">      &quot;author&quot;: &quot;Marijn Haverbeke&quot;,</span>\n<span class=\"grvsc-line\">      &quot;publisher&quot;: &quot;No Starch Press&quot;,</span>\n<span class=\"grvsc-line\">      &quot;description&quot;: &quot;JavaScript lies at the heart of almost every modern web application, from social apps to the newest browser-based games. Though simple for beginners to pick up and play with, JavaScript is a flexible, complex language that you can use to build full-scale applications.&quot;</span>\n<span class=\"grvsc-line\">    },</span>\n<span class=\"grvsc-line\">    {</span>\n<span class=\"grvsc-line\">      &quot;title&quot;: &quot;Learning JavaScript Design Patterns&quot;,</span>\n<span class=\"grvsc-line\">      &quot;subtitle&quot;: &quot;A JavaScript and jQuery Developer&#39;s Guide&quot;,</span>\n<span class=\"grvsc-line\">      &quot;author&quot;: &quot;Addy Osmani&quot;,</span>\n<span class=\"grvsc-line\">      &quot;publisher&quot;: &quot;O&#39;Reilly Media&quot;,</span>\n<span class=\"grvsc-line\">      &quot;description&quot;: &quot;With Learning JavaScript Design Patterns, you&#39;ll learn how to write beautiful, structured, and maintainable JavaScript by applying classical and modern design patterns to the language. If you want to keep your code efficient, more manageable, and up-to-date with the latest best practices, this book is for you.&quot;</span>\n<span class=\"grvsc-line\">    },</span>\n<span class=\"grvsc-line\">    {</span>\n<span class=\"grvsc-line\">      &quot;title&quot;: &quot;Speaking JavaScript&quot;,</span>\n<span class=\"grvsc-line\">      &quot;subtitle&quot;: &quot;An In-Depth Guide for Programmers&quot;,</span>\n<span class=\"grvsc-line\">      &quot;author&quot;: &quot;Axel Rauschmayer&quot;,</span>\n<span class=\"grvsc-line\">      &quot;publisher&quot;: &quot;O&#39;Reilly Media&quot;,</span>\n<span class=\"grvsc-line\">      &quot;description&quot;: &quot;Like it or not, JavaScript is everywhere these days, from browser to server to mobile and now you, too, need to learn the language or dive deeper than you have. This concise book guides you into and through JavaScript, written by a veteran programmer who once found himself in the same position.&quot;</span>\n<span class=\"grvsc-line\">    },</span>\n<span class=\"grvsc-line\">    {</span>\n<span class=\"grvsc-line\">      &quot;title&quot;: &quot;Programming JavaScript Applications&quot;,</span>\n<span class=\"grvsc-line\">      &quot;subtitle&quot;: &quot;Robust Web Architecture with Node, HTML5, and Modern JS Libraries&quot;,</span>\n<span class=\"grvsc-line\">      &quot;author&quot;: &quot;Eric Elliott&quot;,</span>\n<span class=\"grvsc-line\">      &quot;publisher&quot;: &quot;O&#39;Reilly Media&quot;,</span>\n<span class=\"grvsc-line\">      &quot;description&quot;: &quot;Take advantage of JavaScript&#39;s power to build robust web-scale or enterprise applications that are easy to extend and maintain. By applying the design patterns outlined in this practical book, experienced JavaScript developers will learn how to write flexible and resilient code that&#39;s easier-yes, easier-to work with as your codebase grows.&quot;</span>\n<span class=\"grvsc-line\">    },</span>\n<span class=\"grvsc-line\">    {</span>\n<span class=\"grvsc-line\">      &quot;title&quot;: &quot;Understanding ECMAScript 6&quot;,</span>\n<span class=\"grvsc-line\">      &quot;subtitle&quot;: &quot;The Definitive Guide for JavaScript Developers&quot;,</span>\n<span class=\"grvsc-line\">      &quot;author&quot;: &quot;Nicholas C. Zakas&quot;,</span>\n<span class=\"grvsc-line\">      &quot;publisher&quot;: &quot;No Starch Press&quot;,</span>\n<span class=\"grvsc-line\">      &quot;description&quot;: &quot;ECMAScript 6 represents the biggest update to the core of JavaScript in the history of the language. In Understanding ECMAScript 6, expert developer Nicholas C. Zakas provides a complete guide to the object types, syntax, and other exciting changes that ECMAScript 6 brings to JavaScript.&quot;</span>\n<span class=\"grvsc-line\">    }</span>\n<span class=\"grvsc-line\">])</span></code></pre>\n<h2 id=\"creating-a-text-index\" style=\"position:relative;\"><a href=\"#creating-a-text-index\" aria-label=\"creating a text index permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Creating a Text Index</h2>\n<p>We need to create a text index on the fields to perform the text search. We can create this on single or multiple fields. The following statement will create a text index on a single field.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"2\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">&gt;db.books.createIndex({&quot;description&quot;:&quot;text&quot;})</span></code></pre>\n<p>We will create a text index on the <em>description</em> and <em>subtitle</em> fields for this tutorial. We can create only one text index per collection in MongoDB. So We will create a compound text index using the following statement.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"3\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">&gt;db.books.createIndex({&quot;subtitle&quot;:&quot;text&quot;,&quot;description&quot;:&quot;text&quot;})</span></code></pre>\n<h2 id=\"search\" style=\"position:relative;\"><a href=\"#search\" aria-label=\"search permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>$search</h2>\n<p>Now we will try to search documents that have the keywords 'ECMAScript' in the <em>description</em> and <em>subtitle</em> fields. For this, we can use the below statement.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"4\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">db.books.find({$text: {$search: &quot;ECMAScript&quot;}})</span></code></pre>\n<p><strong>Example</strong></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"5\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">&gt;db.books.find({$text: {$search: &quot;ECMAScript&quot;}},{ subtitle: 1, description: 1 })</span>\n<span class=\"grvsc-line\">\t{</span>\n<span class=\"grvsc-line\">    &quot;_id&quot; : ObjectId(&quot;602b09cb3cb6144ada1c62fe&quot;),</span>\n<span class=\"grvsc-line\">    &quot;subtitle&quot; : &quot;The Definitive Guide for JavaScript Developers&quot;,</span>\n<span class=\"grvsc-line\">    &quot;description&quot; : &quot;ECMAScript 6 represents the biggest update to the core of JavaScript in the history of the language. In Understanding ECMAScript 6, expert developer Nicholas C. Zakas provides a complete guide to the object types, syntax, and other exciting changes that ECMAScript 6 brings to JavaScript.&quot;</span>\n<span class=\"grvsc-line\">\t}</span>\n<span class=\"grvsc-line\">&gt;</span></code></pre>\n<h3 id=\"phrases\" style=\"position:relative;\"><a href=\"#phrases\" aria-label=\"phrases permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Phrases</h3>\n<p>You can search for phrases using the text index. By default, text search performs an OR search for all words in the phrase. If you want to search 'modern design patterns', it will search for documents with the keywords either modern, design, or patterns.</p>\n<p><strong>Example</strong></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"6\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">&gt;db.books.find({$text: {$search: &quot;modern design patterns&quot;}},{ subtitle: 1, description: 1 })</span>\n<span class=\"grvsc-line\">\t{</span>\n<span class=\"grvsc-line\">    &quot;_id&quot; : ObjectId(&quot;602b098f3cb6144ada1c2ea1&quot;),</span>\n<span class=\"grvsc-line\">    &quot;subtitle&quot; : &quot;A JavaScript and jQuery Developer&#39;s Guide&quot;,</span>\n<span class=\"grvsc-line\">    &quot;description&quot; : &quot;With Learning JavaScript Design Patterns, you&#39;ll learn how to write beautiful, structured, and maintainable JavaScript by applying classical and modern design patterns to the language. If you want to keep your code efficient, more manageable, and up-to-date with the latest best practices, this book is for you.&quot;</span>\n<span class=\"grvsc-line\">\t},</span>\n<span class=\"grvsc-line\">\t{</span>\n<span class=\"grvsc-line\">    &quot;_id&quot; : ObjectId(&quot;602b09b93cb6144ada1c4bca&quot;),</span>\n<span class=\"grvsc-line\">    &quot;subtitle&quot; : &quot;Robust Web Architecture with Node, HTML5, and Modern JS Libraries&quot;,</span>\n<span class=\"grvsc-line\">    &quot;description&quot; : &quot;Take advantage of JavaScript&#39;s power to build robust web-scale or enterprise applications that are easy to extend and maintain. By applying the design patterns outlined in this practical book, experienced JavaScript developers will learn how to write flexible and resilient code that&#39;s easier-yes, easier-to work with as your code base grows.&quot;,</span>\n<span class=\"grvsc-line\">\t},</span>\n<span class=\"grvsc-line\">\t{</span>\n<span class=\"grvsc-line\">    &quot;_id&quot; : ObjectId(&quot;602b095c3cb6144ada1c1028&quot;),</span>\n<span class=\"grvsc-line\">    &quot;subtitle&quot; : &quot;A Modern Introduction to Programming&quot;,</span>\n<span class=\"grvsc-line\">    &quot;description&quot; : &quot;JavaScript lies at the heart of almost every modern web application, from social apps to the newest browser-based games. Though simple for beginners to pick up and play with, JavaScript is a flexible, complex language that you can use to build full-scale applications.&quot;</span>\n<span class=\"grvsc-line\">\t}</span>\n<span class=\"grvsc-line\">&gt;</span></code></pre>\n<p>If you want to search for exact phrases like documents with 'modern design patterns' together, you can do so by specifying double quotes in the search text.</p>\n<p><strong>Example</strong></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"7\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">&gt;db.books.find({$text: {$search: &quot;\\&quot;modern design patterns\\&quot;&quot;}},{ subtitle: 1, description: 1 })</span>\n<span class=\"grvsc-line\">\t{</span>\n<span class=\"grvsc-line\">    &quot;_id&quot; : ObjectId(&quot;602b098f3cb6144ada1c2ea1&quot;),</span>\n<span class=\"grvsc-line\">    &quot;subtitle&quot; : &quot;A JavaScript and jQuery Developer&#39;s Guide&quot;,</span>\n<span class=\"grvsc-line\">    &quot;description&quot; : &quot;With Learning JavaScript Design Patterns, you&#39;ll learn how to write beautiful, structured, and maintainable JavaScript by applying classical and modern design patterns to the language. If you want to keep your code efficient, more manageable, and up-to-date with the latest best practices, this book is for you.&quot;</span>\n<span class=\"grvsc-line\">}</span></code></pre>\n<h3 id=\"negations\" style=\"position:relative;\"><a href=\"#negations\" aria-label=\"negations permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Negations</h3>\n<p>If you want to exclude the documents containing a particular word, you can use a negation search. For example if you're going to search all documents with the 'JavaScript' but not 'HTML5' or 'ECMAScript', you can search as the below example.</p>\n<p><strong>Example</strong></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"8\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">&gt;db.books.find({$text: {$search: &quot;JavaScript -HTML5 -ECMAScript&quot;}},{ subtitle: 1, description: 1 })</span>\n<span class=\"grvsc-line\">\t{</span>\n<span class=\"grvsc-line\">    &quot;_id&quot; : ObjectId(&quot;602b098f3cb6144ada1c2ea1&quot;),</span>\n<span class=\"grvsc-line\">    &quot;subtitle&quot; : &quot;A JavaScript and jQuery Developer&#39;s Guide&quot;,</span>\n<span class=\"grvsc-line\">    &quot;description&quot; : &quot;With Learning JavaScript Design Patterns, you&#39;ll learn how to write beautiful, structured, and maintainable JavaScript by applying classical and modern design patterns to the language. If you want to keep your code efficient, more manageable, and up-to-date with the latest best practices, this book is for you.&quot;</span>\n<span class=\"grvsc-line\">\t},</span>\n<span class=\"grvsc-line\">\t{</span>\n<span class=\"grvsc-line\">    &quot;_id&quot; : ObjectId(&quot;602b09a83cb6144ada1c4973&quot;),</span>\n<span class=\"grvsc-line\">    &quot;subtitle&quot; : &quot;An In-Depth Guide for Programmers&quot;,</span>\n<span class=\"grvsc-line\">    &quot;description&quot; : &quot;Like it or not, JavaScript is everywhere these days, from browser to server to mobile and now you, too, need to learn the language or dive deeper than you have. This concise book guides you into and through JavaScript, written by a veteran programmer who once found himself in the same position.&quot;</span>\n<span class=\"grvsc-line\">\t},</span>\n<span class=\"grvsc-line\">\t{</span>\n<span class=\"grvsc-line\">    &quot;_id&quot; : ObjectId(&quot;602b095c3cb6144ada1c1028&quot;),</span>\n<span class=\"grvsc-line\">    &quot;subtitle&quot; : &quot;A Modern Introduction to Programming&quot;,</span>\n<span class=\"grvsc-line\">    &quot;description&quot; : &quot;JavaScript lies at the heart of almost every modern web application, from social apps to the newest browser-based games. Though simple for beginners to pick up and play with, JavaScript is a flexible, complex language that you can use to build full-scale applications.&quot;</span>\n<span class=\"grvsc-line\">\t}</span></code></pre>\n<h3 id=\"text-search-score\" style=\"position:relative;\"><a href=\"#text-search-score\" aria-label=\"text search score permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Text Search Score</h3>\n<p>The text search provides a score to each document representing the relevancy of the document with the search query. This score can be used to sort all the records returned in the search result. A higher score will indicate a most relevant match.</p>\n<p><strong>Example</strong></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"9\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">&gt;db.books.find({$text: {$search: &quot;JavaScript &quot;}},{score: {$meta: &quot;textScore&quot;}, subtitle: 1, description: 1 }).sort({score:{$meta:&quot;textScore&quot;}})</span>\n<span class=\"grvsc-line\">\t{</span>\n<span class=\"grvsc-line\">    &quot;_id&quot; : ObjectId(&quot;602b098f3cb6144ada1c2ea1&quot;),</span>\n<span class=\"grvsc-line\">    &quot;subtitle&quot; : &quot;A JavaScript and jQuery Developer&#39;s Guide&quot;,</span>\n<span class=\"grvsc-line\">    &quot;description&quot; : &quot;With Learning JavaScript Design Patterns, you&#39;ll learn how to write beautiful, structured, and maintainable JavaScript by applying classical and modern design patterns to the language. If you want to keep your code efficient, more manageable, and up-to-date with the latest best practices, this book is for you.&quot;,</span>\n<span class=\"grvsc-line\">    &quot;score&quot; : 1.43269230769231</span>\n<span class=\"grvsc-line\">\t},</span>\n<span class=\"grvsc-line\">\t{</span>\n<span class=\"grvsc-line\">    &quot;_id&quot; : ObjectId(&quot;602b09cb3cb6144ada1c62fe&quot;),</span>\n<span class=\"grvsc-line\">    &quot;subtitle&quot; : &quot;The Definitive Guide for JavaScript Developers&quot;,</span>\n<span class=\"grvsc-line\">    &quot;description&quot; : &quot;ECMAScript 6 represents the biggest update to the core of JavaScript in the history of the language. In Understanding ECMAScript 6, expert developer Nicholas C. Zakas provides a complete guide to the object types, syntax, and other exciting changes that ECMAScript 6 brings to JavaScript.&quot;,</span>\n<span class=\"grvsc-line\">    &quot;score&quot; : 1.42672413793103</span>\n<span class=\"grvsc-line\">\t},</span>\n<span class=\"grvsc-line\">\t{</span>\n<span class=\"grvsc-line\">    &quot;_id&quot; : ObjectId(&quot;602b09a83cb6144ada1c4973&quot;),</span>\n<span class=\"grvsc-line\">    &quot;subtitle&quot; : &quot;An In-Depth Guide for Programmers&quot;,</span>\n<span class=\"grvsc-line\">    &quot;description&quot; : &quot;Like it or not, JavaScript is everywhere these days, from browser to server to mobile and now you, too, need to learn the language or dive deeper than you have. This concise book guides you into and through JavaScript, written by a veteran programmer who once found himself in the same position.&quot;,</span>\n<span class=\"grvsc-line\">    &quot;score&quot; : 0.818181818181818</span>\n<span class=\"grvsc-line\">\t},</span>\n<span class=\"grvsc-line\">\t{</span>\n<span class=\"grvsc-line\">    &quot;_id&quot; : ObjectId(&quot;602b095c3cb6144ada1c1028&quot;),</span>\n<span class=\"grvsc-line\">    &quot;subtitle&quot; : &quot;A Modern Introduction to Programming&quot;,</span>\n<span class=\"grvsc-line\">    &quot;description&quot; : &quot;JavaScript lies at the heart of almost every modern web application, from social apps to the newest browser-based games. Though simple for beginners to pick up and play with, JavaScript is a flexible, complex language that you can use to build full-scale applications.&quot;,</span>\n<span class=\"grvsc-line\">    &quot;score&quot; : 0.801724137931034</span>\n<span class=\"grvsc-line\">\t},</span>\n<span class=\"grvsc-line\">\t{</span>\n<span class=\"grvsc-line\">    &quot;_id&quot; : ObjectId(&quot;602b09b93cb6144ada1c4bca&quot;),</span>\n<span class=\"grvsc-line\">    &quot;subtitle&quot; : &quot;Robust Web Architecture with Node, HTML5, and Modern JS Libraries&quot;,</span>\n<span class=\"grvsc-line\">    &quot;description&quot; : &quot;Take advantage of JavaScript&#39;s power to build robust web-scale or enterprise applications that are easy to extend and maintain. By applying the design patterns outlined in this practical book, experienced JavaScript developers will learn how to write flexible and resilient code that&#39;s easier-yes, easier-to work with as your codebase grows.&quot;,</span>\n<span class=\"grvsc-line\">    &quot;score&quot; : 0.792857142857143</span>\n<span class=\"grvsc-line\">\t}</span></code></pre>\n<h3 id=\"stop-words\" style=\"position:relative;\"><a href=\"#stop-words\" aria-label=\"stop words permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Stop Words</h3>\n<p>The $text operator filters out the language-specific stop words, such as a, an, the and in English. The below search will not return any document in the result.</p>\n<p><strong>Example</strong></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"10\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">&gt;db.books.find({$text: {$search: &quot;is&quot;}},{subtitle: 1, description: 1 })</span>\n<span class=\"grvsc-line\">\tFetched 0 record(s)</span></code></pre>\n<h3 id=\"stemmed-words\" style=\"position:relative;\"><a href=\"#stemmed-words\" aria-label=\"stemmed words permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Stemmed Words</h3>\n<p>The $text operator matches on the complete stemmed word. So if some document field contains the word learning or learn, a search on the term learning or learn would result in the same.</p>\n<p><strong>Example</strong></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"11\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">&gt;db.books.find({$text: {$search: &quot; learn&quot;}},{subtitle: 1, description: 1 }) or &gt;db.books.find({$text: {$search: &quot; learning&quot;}},{subtitle: 1, description: 1 })</span>\n<span class=\"grvsc-line\">\t{</span>\n<span class=\"grvsc-line\">    &quot;_id&quot; : ObjectId(&quot;602b098f3cb6144ada1c2ea1&quot;),</span>\n<span class=\"grvsc-line\">    &quot;subtitle&quot; : &quot;A JavaScript and jQuery Developer&#39;s Guide&quot;,</span>\n<span class=\"grvsc-line\">    &quot;description&quot; : &quot;With Learning JavaScript Design Patterns, you&#39;ll learn how to write beautiful, structured, and maintainable JavaScript by applying classical and modern design patterns to the language. If you want to keep your code efficient, more manageable, and up-to-date with the latest best practices, this book is for you.&quot;</span>\n<span class=\"grvsc-line\">\t},</span>\n<span class=\"grvsc-line\">\t{</span>\n<span class=\"grvsc-line\">    &quot;_id&quot; : ObjectId(&quot;602b09a83cb6144ada1c4973&quot;),</span>\n<span class=\"grvsc-line\">    &quot;subtitle&quot; : &quot;An In-Depth Guide for Programmers&quot;,</span>\n<span class=\"grvsc-line\">    &quot;description&quot; : &quot;Like it or not, JavaScript is everywhere these days, from browser to server to mobile and now you, too, need to learn the language or dive deeper than you have. This concise book guides you into and through JavaScript, written by a veteran programmer who once found himself in the same position.&quot;</span>\n<span class=\"grvsc-line\">\t},</span>\n<span class=\"grvsc-line\">\t{</span>\n<span class=\"grvsc-line\">    &quot;_id&quot; : ObjectId(&quot;602b09b93cb6144ada1c4bca&quot;),</span>\n<span class=\"grvsc-line\">    &quot;subtitle&quot; : &quot;Robust Web Architecture with Node, HTML5, and Modern JS Libraries&quot;,</span>\n<span class=\"grvsc-line\">    &quot;description&quot; : &quot;Take advantage of JavaScript&#39;s power to build robust web-scale or enterprise applications that are easy to extend and maintain. By applying the design patterns outlined in this practical book, experienced JavaScript developers will learn how to write flexible and resilient code that&#39;s easier-yes, easier-to work with as your codebase grows.&quot;</span>\n<span class=\"grvsc-line\">\t}</span></code></pre>\n<h2 id=\"conclusion\" style=\"position:relative;\"><a href=\"#conclusion\" aria-label=\"conclusion permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Conclusion</h2>\n<p>I hope you learned something new today. Here is an interesting article on <a href=\"https://www.loginradius.com/blog/engineering/self-hosted-mongo/\">Self-Hosted MongoDB</a>. I also invite you to try stuff on your own and share your experience in the comment section. Furthermore, if you face any problems with any of the above definitions, please feel free to ask me in the comments section below.</p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n  .dark-default-dark {\n    background-color: #1E1E1E;\n    color: #D4D4D4;\n  }\n</style>","frontmatter":{"date":"February 16, 2021","updated_date":null,"description":"MongoDB full text search tutorial. In this blog, we will learn how to perform a full-text search in MongoDB using text index.","title":"How to do Full-Text Search in MongoDB","tags":["MongoDB"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/f4c86ce656fbbcd1cebd60b0c6606d53/58556/coverImage.webp","srcSet":"/static/f4c86ce656fbbcd1cebd60b0c6606d53/61e93/coverImage.webp 200w,\n/static/f4c86ce656fbbcd1cebd60b0c6606d53/1f5c5/coverImage.webp 400w,\n/static/f4c86ce656fbbcd1cebd60b0c6606d53/58556/coverImage.webp 800w,\n/static/f4c86ce656fbbcd1cebd60b0c6606d53/99238/coverImage.webp 1200w,\n/static/f4c86ce656fbbcd1cebd60b0c6606d53/7c22d/coverImage.webp 1600w,\n/static/f4c86ce656fbbcd1cebd60b0c6606d53/25f09/coverImage.webp 1920w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Anil Gupta","github":"anilswm","avatar":null}}}},{"node":{"excerpt":"No matter what your application is for, it is a must to have ease of use, frictionless authentication, and guaranteed security (against…","fields":{"slug":"/identity/biometric-authentication-mobile-apps/"},"html":"<p>No matter what your application is for, it is a must to have ease of use, frictionless authentication, and guaranteed security (against fraud protection and password-related attacks). These variables help you to build both a spectacular first impression and long-lasting confidence.</p>\n<p>When <a href=\"https://www.loginradius.com/blog/identity/2020/11/authentication-sso-native-mobile-apps/\">using mobile apps</a>, consumers prefer to open it and quickly start using it. It can be a frustrating experience for them if you keep asking for the account password every time they open the app. But then, it is also a business necessity to ensure safe access to the app.</p>\n<p>So, how do you offer a great experience and security at the same time? </p>\n<p>The LoginRadius Mobile Biometric Authentication can help. The feature is dedicated to mobile apps and allows consumers to use their mobile devices' FaceID and TouchID for authentication. </p>\n<h2 id=\"intend-behind-the-launch\" style=\"position:relative;\"><a href=\"#intend-behind-the-launch\" aria-label=\"intend behind the launch permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Intend Behind the Launch</h2>\n<p>With Mobile Biometric Authentication, consumers can use their existing FaceID or TouchID for authentication without any additional effort.</p>\n<p>Also, consumers' biometric data remains stored on their phone rather than the server, making it even more secure. </p>\n<p>Let's underline some of the major benefits of Mobile Biometric Authentication.</p>\n<ul>\n<li>Since biometric data cannot be hacked or duplicated, the feature protects consumers against <a href=\"https://www.loginradius.com/blog/identity/2020/04/corporate-account-takeover-attacks/\">account takeover attacks</a>. </li>\n<li>It ranks high on the usability quotient as consumers need not remember or enter a new password or PIN. Also, consumers don’t need to worry about resetting their credentials since there is no use case of forgetting one’s biometric credentials like fingerprint or face. </li>\n<li>Consumers have already been authenticating themselves using Face ID and Touch ID on their Android and iOS devices.  Thus, they are already familiar with the method. </li>\n<li>For biometric authentication, physical proximity is required if hackers want to bypass the login process. Cybercriminals coming into the physical proximity of the actual consumer is rare. </li>\n</ul>\n<p><a href=\"https://www.loginradius.com/resource/mobile-biometric-authentication-datasheet\"><img src=\"/45c7087f5ea9446e99ad4d928a5b72de/biometric-authentication-mobile-apps-datasheet.webp\" alt=\"biometric-authentication-mobile-apps-datasheet\"></a></p>\n<h2 id=\"key-features-offered-by-loginradius\" style=\"position:relative;\"><a href=\"#key-features-offered-by-loginradius\" aria-label=\"key features offered by loginradius permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Key Features Offered by LoginRadius</h2>\n<p>LoginRadius offers local authentication with Touch ID and Face ID for Android and iOS devices—provided the consumers' mobile devices also support these features.</p>\n<ul>\n<li><strong>Touch ID:</strong> This feature lets you authenticate consumers using their Fingerprint. Consumers can use fingerprints that are the same as already set for their Android or iOS mobile devices without having to go through the entire setup process on your app. </li>\n<li><strong>Face ID:</strong> This feature lets you authenticate consumers using their Face. Similar to Touch ID, the Face ID remains the same as already set for the consumer's Android or iOS mobile device. They need not go through the Face ID setup process on your app as well. </li>\n</ul>\n<p>You can configure both authentication options for your app and later, ask the consumer to choose according to their preference or the option available with their device. </p>\n<h2 id=\"conclusion\" style=\"position:relative;\"><a href=\"#conclusion\" aria-label=\"conclusion permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Conclusion</h2>\n<p>The Mobile Biometric Authentication by LoginRadius is a local authentication concept and consumers' biometric data don't even leave their mobile devices. Hence, as a business, you don't need to worry about storing, processing, and securing your consumer's biometric data. </p>\n<p><a href=\"https://www.loginradius.com/contact-us?utm_source=blog&#x26;utm_medium=web&#x26;utm_campaign=biometric-authentication-mobile-apps\"><img src=\"/8fce571f703a5970dbb1359a2fe0e51a/book-a-demo-loginradius.webp\" alt=\"LoginRadius Book a Demo\"></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"February 16, 2021","updated_date":null,"description":"The LoginRadius Mobile Biometric Authentication feature is dedicated to mobile applications and enables users to use the FaceID and TouchID of their mobile devices for authentication purposes.","title":"Announcement - LoginRadius Introduces Convenient and Secure Biometric Authentication for Mobile Apps","tags":["biometric authentication","cx","ciam solution"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.408450704225352,"src":"/static/04ded459c8909fa08c0befc317400736/c0524/biometric-authentication-mobile-apps.webp","srcSet":"/static/04ded459c8909fa08c0befc317400736/61e93/biometric-authentication-mobile-apps.webp 200w,\n/static/04ded459c8909fa08c0befc317400736/1f5c5/biometric-authentication-mobile-apps.webp 400w,\n/static/04ded459c8909fa08c0befc317400736/c0524/biometric-authentication-mobile-apps.webp 769w","sizes":"(max-width: 769px) 100vw, 769px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.webp"}}}}]},"markdownRemark":{"excerpt":"Identity is evolving, and developers are at the forefront of this transformation. Every day brings a new learning—adapting to new standards…","fields":{"slug":"/identity/developer-first-identity-provider-loginradius/"},"html":"<p>Identity is evolving, and developers are at the forefront of this transformation. Every day brings a new learning—adapting to new standards and refining approaches to building secure, seamless experiences.</p>\n<p>We’re here to support developers on that journey. We know how important simplicity, efficiency, and well-structured documentation are when working with identity and access management solutions. That’s why we’ve redesigned the <a href=\"https://www.loginradius.com/\">LoginRadius website</a>—to be faster, more intuitive, and developer-first in every way.</p>\n<p>The goal? Having them spend less time searching and more time building.</p>\n<h2 id=\"whats-new-and-improved-on-the-loginradius-website\" style=\"position:relative;\"><a href=\"#whats-new-and-improved-on-the-loginradius-website\" aria-label=\"whats new and improved on the loginradius website permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What’s New and Improved on the LoginRadius Website?</h2>\n<p>LoginRadius’ vision is to give developers a product that simplifies identity management so they can focus on building, deploying, and scaling their applications. To enhance this experience, we’ve spent the last few months redesigning our interface— making navigation more intuitive and reassuring that essential resources are easily accessible.</p>\n<p>Here’s a closer look at what’s new and why it’s important:</p>\n<h3 id=\"a-developer-friendly-dark-theme\" style=\"position:relative;\"><a href=\"#a-developer-friendly-dark-theme\" aria-label=\"a developer friendly dark theme permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>A Developer-Friendly Dark Theme</h3>\n<p><img src=\"/f46881583c7518a93bb24e94c32320de/a-developer-friendly-dark-theme.webp\" alt=\"This image shows how LoginRadius offers several authentication methods like traditional login, social login, passwordless login, passkeys and more in a dark mode.\">    </p>\n<p>Developers spend long hours working in dark-themed IDEs and terminals, so we’ve designed the LoginRadius experience to be developer-friendly and align with that preference.</p>\n<p>The new dark mode reduces eye strain, enhances readability, and provides a seamless transition between a coding environment and our platform. Our new design features a clean, modern aesthetic with a consistent color scheme and Barlow typography, ensuring better readability. High-quality graphics and icons are thoughtfully placed to enhance the content without adding visual clutter.</p>\n<p>So, whether you’re navigating our API docs or configuring authentication into your system, our improved interface will make those extended development hours more comfortable and efficient.</p>\n<h3 id=\"clear-categorization-for-loginradius-capabilities\" style=\"position:relative;\"><a href=\"#clear-categorization-for-loginradius-capabilities\" aria-label=\"clear categorization for loginradius capabilities permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Clear Categorization for LoginRadius Capabilities</h3>\n<p><img src=\"/e5358b82be414940f3fb146013845933/capabilities.webp\" alt=\"This image shows a breakdown of all the LoginRadius CIAM capabilities, including authentication, security, UX, scalability and multi-brand management.\"></p>\n<p>We’ve restructured our website to provide a straightforward breakdown of our customer identity and access management platform capabilities, helping you quickly find what you need:</p>\n<ul>\n<li>Authentication: Easily understand <a href=\"https://www.loginradius.com/blog/identity/authentication-option-for-your-product/\">how to choose the right login method</a>, from traditional passwords and OTPs to social login, federated SSO, and passkeys with few lines of code.</li>\n<li>Security: Implement no-code security features like bot detection, IP throttling, breached password alerts, DDoS protection, and adaptive MFA to safeguard user accounts.</li>\n<li>User Experience: Leverage AI builder, hosted pages, and drag-and-drop workflows to create smooth, branded sign-up and login experiences.</li>\n<li>High Performance &#x26; Scalability: Confidently scale with sub-100ms API response times, 100% uptime, 240K+ RPS, and 28+ global data center regions.</li>\n<li>Multi-Brand Management: Efficiently manage multiple identity apps, choosing isolated or shared data stores based on your brand’s unique needs.</li>\n</ul>\n<p>This structured layout ensures you can quickly understand each capability and how it integrates into your identity ecosystem.</p>\n<h3 id=\"developer-first-navigation\" style=\"position:relative;\"><a href=\"#developer-first-navigation\" aria-label=\"developer first navigation permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Developer-First Navigation</h3>\n<p><img src=\"/a8c155c2b6faf3d5f4b4de4e2b14d763/developers-menu.webp\" alt=\"This image shows the LoginRadius menu bar, highlighting the developer dropdown.\">   </p>\n<p>We’ve been analyzing developer workflows to identify how you access key resources. That’s why we redesigned our navigation with one goal in mind: to reduce clicks and make essential resources readily available.</p>\n<p>The new LoginRadius structure puts APIs, SDKs, and integration guides right at the menu bar under the Developers dropdown so you can get started faster. Our Products, Solutions, and Customer Services are also clearly categorized, helping development teams quickly find the right tools and make informed decisions.</p>\n<h3 id=\"quick-understanding-of-integration-benefits\" style=\"position:relative;\"><a href=\"#quick-understanding-of-integration-benefits\" aria-label=\"quick understanding of integration benefits permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Quick Understanding of Integration Benefits</h3>\n<p><img src=\"/b2f9a964a2da0ea83e2f8596b833bba7/we-support-your-tech-stack.webp\" alt=\"This image shows a list of popular programming languages and frameworks offered by LoginRadius.\"></p>\n<p>Developers now have a clear view of the tech stack available with LoginRadius, designed to support diverse business needs.</p>\n<p>Our platform offers pre-built SDKs for Node.js, Python, Java, and more, making CIAM integration seamless across popular programming languages and frameworks.</p>\n<h2 id=\"over-to-you-now\" style=\"position:relative;\"><a href=\"#over-to-you-now\" aria-label=\"over to you now permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Over to You Now!</h2>\n<p>Check out our <a href=\"https://www.loginradius.com/\">revamped LoginRadius website</a> and see how the improved experience makes it easier to build, scale, and secure your applications.</p>\n<p>Do not forget to explore the improved navigation and API documentation, and get started with our free trial today. We’re excited to see what you’ll build with LoginRadius!</p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"February 21, 2025","updated_date":null,"description":"LoginRadius’ vision is to give developers a product that simplifies identity management so they can focus on building, deploying, and scaling their applications. To enhance this experience, we’ve redesigned our website interface, making navigation more intuitive and reassuring that essential resources are easily accessible.","title":"Revamped & Ready: Introducing the New Developer-First LoginRadius Website","tags":["Developer tools","API","Identity Management","User Authentication"],"pinned":true,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.7857142857142858,"src":"/static/80b4e4fbe176a10a327d273504607f32/58556/hero-section.webp","srcSet":"/static/80b4e4fbe176a10a327d273504607f32/61e93/hero-section.webp 200w,\n/static/80b4e4fbe176a10a327d273504607f32/1f5c5/hero-section.webp 400w,\n/static/80b4e4fbe176a10a327d273504607f32/58556/hero-section.webp 800w,\n/static/80b4e4fbe176a10a327d273504607f32/99238/hero-section.webp 1200w,\n/static/80b4e4fbe176a10a327d273504607f32/7c22d/hero-section.webp 1600w,\n/static/80b4e4fbe176a10a327d273504607f32/1258b/hero-section.webp 2732w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.webp"}}}},"pageContext":{"limit":6,"skip":600,"currentPage":101,"type":"///","numPages":164,"pinned":"ee8a4479-3471-53b1-bf62-d0d8dc3faaeb"}},"staticQueryHashes":["1171199041","1384082988","2100481360","23180105","528864852"]}