<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Idris Adeniji</title>
    <description>The latest articles on DEV Community by Idris Adeniji (@alvacoder).</description>
    <link>https://dev.to/alvacoder</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F333836%2F7f56738b-f616-421c-8a04-952aaddb4e9a.jpg</url>
      <title>DEV Community: Idris Adeniji</title>
      <link>https://dev.to/alvacoder</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alvacoder"/>
    <language>en</language>
    <item>
      <title>Your UI is Not Part of Security: The Reality of BOLA</title>
      <dc:creator>Idris Adeniji</dc:creator>
      <pubDate>Thu, 04 Sep 2025 10:09:03 +0000</pubDate>
      <link>https://dev.to/alvacoder/your-ui-is-not-part-of-security-the-reality-of-bola-52jn</link>
      <guid>https://dev.to/alvacoder/your-ui-is-not-part-of-security-the-reality-of-bola-52jn</guid>
      <description>&lt;p&gt;When building applications, it’s tempting to assume that security lives in the user interface (UI). After all, the UI dictates what the end user can see and do.&lt;/p&gt;

&lt;p&gt;But here’s the truth: attackers rarely care about your UI. They go straight to your APIs.&lt;/p&gt;

&lt;p&gt;And when your APIs don’t enforce authorization properly, you’re facing one of the most common and dangerous vulnerabilities in the OWASP top 10 today: BOLA (Broken Object Level Authorization).&lt;/p&gt;

&lt;p&gt;🔎 What is BOLA?&lt;br&gt;
BOLA happens when backend systems fail to validate whether a user is authorized to access a specific object.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;✅ Normal behavior (legitimate user request):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET /api/users/123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;❌ Attacker tweaks the request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET /api/users/124
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the backend doesn’t enforce authorization, the attacker can now access another user’s data.&lt;/p&gt;

&lt;p&gt;The scary part? This doesn’t require advanced tools. A proxy like Burp Suite or even curl is enough.&lt;/p&gt;

&lt;p&gt;🚫 Why the UI is Less Irrelevant to Security&lt;br&gt;
Many developers think:&lt;/p&gt;

&lt;p&gt;“The UI only shows data the user should see.”&lt;/p&gt;

&lt;p&gt;“There’s no button for that, so it can’t happen.”&lt;/p&gt;

&lt;p&gt;But here’s the problem: 👉 The UI is just a client of your API.&lt;/p&gt;

&lt;p&gt;Attackers skip the UI entirely and target endpoints directly. If your backend doesn’t enforce proper checks, it doesn’t matter what the UI does.&lt;/p&gt;

&lt;p&gt;💥 The Business Impact of BOLA&lt;br&gt;
BOLA is more than a coding oversight — it’s been behind major real-world breaches.&lt;/p&gt;

&lt;p&gt;The risks include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Exposure of sensitive personal or financial data&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Unauthorized transactions or account takeovers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Compliance violations (GDPR, HIPAA, PCI DSS)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Loss of customer trust and reputational damage&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because BOLA attacks are so straightforward, they’re often the first thing pentesters and attackers try and you can defend against them by doing the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Always enforce authorization on the backend&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Apply least privilege&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Centralize access control logic&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Test beyond the UI&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Automate in CI/CD&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;✅ Key Takeaway&lt;/p&gt;

&lt;p&gt;Security doesn’t live in your UI. It lives mostly in your APIs, backend logic, and consistent enforcement of object-level authorization.&lt;/p&gt;

&lt;p&gt;If your defense strategy stops at the interface, you’ve already lost.&lt;/p&gt;

&lt;p&gt;Because attackers never click the button — they rewrite the request.&lt;/p&gt;

&lt;p&gt;#ApiSecurity #OWASP #OWASP #security #cybersecurity&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Deploying A NodeJS App With Elastic Beanstalk</title>
      <dc:creator>Idris Adeniji</dc:creator>
      <pubDate>Wed, 05 Jul 2023 07:18:11 +0000</pubDate>
      <link>https://dev.to/alvacoder/deploying-a-nodejs-app-with-elastic-beanstalk-2h5p</link>
      <guid>https://dev.to/alvacoder/deploying-a-nodejs-app-with-elastic-beanstalk-2h5p</guid>
      <description>&lt;p&gt;Managing applications on the cloud can be a complex task, especially when it involves handling multiple environments, scaling, and deploying updates. However, there's a solution that can alleviate these challenges: AWS Elastic Beanstalk. This service provided by Amazon Web Services offers a user-friendly platform for deploying, managing, and scaling applications in the AWS Cloud.&lt;/p&gt;

&lt;p&gt;In this tutorial, we will delve into the fundamentals of Elastic Beanstalk and guide you through the process of deploying a NodeJS app connected to an RDS database. Let's begin!&lt;/p&gt;

&lt;p&gt;Introduction to AWS Elastic Beanstalk&lt;/p&gt;

&lt;p&gt;AWS Elastic Beanstalk is a fully managed service designed to simplify the deployment, management, and scaling of applications on AWS. It takes care of provisioning the necessary resources, including EC2 instances, RDS databases, and load balancers.&lt;/p&gt;

&lt;p&gt;Elastic Beanstalk handles the deployment, monitoring, and maintenance tasks of your applications, enabling you to focus on coding and delivering new features.&lt;/p&gt;

&lt;p&gt;One of the advantages of Elastic Beanstalk is that it leverages CloudFormation to provision resources. The great news is that you don't have to write CloudFormation templates yourself. Elastic Beanstalk takes care of it automatically.&lt;/p&gt;

&lt;p&gt;Now that we have a basic understanding of Elastic Beanstalk, let's explore the process of deploying a NodeJS app with a RDS connection.&lt;/p&gt;

&lt;p&gt;Preparing the NodeJS Source Code&lt;br&gt;
Before deploying our app to Elastic Beanstalk, we need to perform a few steps. Although it took me hours to figure this out, I'll guide you through the process, and you'll be able to deploy your app in about 10 minutes.&lt;/p&gt;

&lt;p&gt;Deploying Your Own App&lt;br&gt;
First, ensure that your &lt;code&gt;package.json&lt;/code&gt; file includes the &lt;code&gt;start&lt;/code&gt; command, and that this command is configured to run your app. By default, Beanstalk executes &lt;code&gt;npm start&lt;/code&gt;, and if it cannot find it, an error will be thrown.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqrhyuscnept1j2c4c0af.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqrhyuscnept1j2c4c0af.png" alt="package.json file with start command"&gt;&lt;/a&gt;&lt;br&gt;
package.json file with start command&lt;/p&gt;

&lt;p&gt;Configuring environment variables is a crucial aspect when working with AWS Elastic Beanstalk, particularly when it comes to RDS connections. It is important to adhere to the pre-defined naming conventions set by AWS. For more detailed information, you can refer to this article provided by AWS.&lt;/p&gt;

&lt;p&gt;To illustrate this point, let's consider a quick example. When configuring the hostname for the RDS, you must use the specific environment variable designated as &lt;code&gt;RDS_HOSTNAME&lt;/code&gt;. If you use a different variable name, such as &lt;code&gt;DB_HOSTNAME&lt;/code&gt;, your application will be unable to establish a connection.&lt;/p&gt;

&lt;p&gt;In the AWS Elastic Beanstalk console, you have the flexibility to define custom environment variables according to your specific requirements.&lt;/p&gt;

&lt;p&gt;Here's an example of how your DB connection configuration should be structured:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcvji7kpbulbgtsmqjypo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcvji7kpbulbgtsmqjypo.png" alt="Elastic Beanstalk DB configuration"&gt;&lt;/a&gt;&lt;br&gt;
Elastic Beanstalk DB configuration&lt;/p&gt;

&lt;p&gt;Elastic Beanstalk (EBS) by default runs on port 8080. So we have to configure our app to run on port 8080. It's always a best practice to add the port number in environment variables and configure it in the EBS console.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7p1gc6jdb2gd3zjdja2j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7p1gc6jdb2gd3zjdja2j.png" alt="Elastic Beanstalk port"&gt;&lt;/a&gt;&lt;br&gt;
Elastic Beanstalk port&lt;/p&gt;

&lt;p&gt;In order for Elastic Beanstalk to read our environment variables, we should add a file called &lt;code&gt;.ebextensions&lt;/code&gt; in the project root directory with the following code:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

commands:
    setvars:
        command: /opt/elasticbeanstalk/bin/get-config environment | jq -r 'to_entries | .[] | "export \(.key)=\"\(.value)\""' &amp;gt; /etc/profile.d/sh.local
packages:
    yum:
        jq: []


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;.ebextension to get env variables&lt;/p&gt;

&lt;p&gt;Install the dependencies by executing npm install and zip your code along with node_modules by executing the following command:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

zip [filename].zip -r ./


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Remember the zipped file should contain all files and subdirectories in the root folder and should not be inside any other folders. This is because Elastic Beanstalk will check for the &lt;code&gt;package.json&lt;/code&gt; file in the root folder and it'll throw an error if it can't find it.&lt;/p&gt;

&lt;p&gt;Now our app is ready, let's create the Elastic Beanstalk application.&lt;/p&gt;

&lt;p&gt;Creating an Elastic Beanstalk Application&lt;/p&gt;

&lt;p&gt;Step 1: Configuring Your Environment&lt;/p&gt;

&lt;p&gt;To create an Elastic Beanstalk app, follow these steps:&lt;/p&gt;

&lt;p&gt;Open the AWS Management Console and select Elastic Beanstalk from the Services menu. Click on the "Create Application" button. Choose the "Web server environment" option then&lt;br&gt;
Provide a name for your application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiazwxna1f36wovnngiwj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiazwxna1f36wovnngiwj.png" alt="Getting started with AWS Elastic Beanstalk"&gt;&lt;/a&gt;&lt;br&gt;
Getting started with AWS Elastic Beanstalk&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fghsoyd4ueae7g2lq5vtd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fghsoyd4ueae7g2lq5vtd.png" alt="Give your application a name"&gt;&lt;/a&gt;&lt;br&gt;
Give your application a name&lt;/p&gt;

&lt;p&gt;Choose &lt;code&gt;Managed platform&lt;/code&gt; in "Platform type", and &lt;code&gt;Node.js&lt;/code&gt; in "Platform", and leave the rest as it is.&lt;/p&gt;

&lt;p&gt;Then choose &lt;code&gt;Upload your code&lt;/code&gt; in the "Application code" section and upload the zip file.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fntfo3c3wtvu1o5hv7icr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fntfo3c3wtvu1o5hv7icr.png" alt="Elastic Beanstalk"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6s63e5eog28jfdie9n8f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6s63e5eog28jfdie9n8f.png" alt="Elastic Beanstalk"&gt;&lt;/a&gt;&lt;br&gt;
Screenshot of the above selections&lt;/p&gt;

&lt;p&gt;Then set the version label to &lt;code&gt;1&lt;/code&gt; and choose &lt;code&gt;Single instance&lt;/code&gt; in the "Presets" section and click Next.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Prefer &lt;code&gt;High availability&lt;/code&gt; for production environment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fky2qi1nfucc8auk8vj6l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fky2qi1nfucc8auk8vj6l.png" alt="Elastic Beanstalk"&gt;&lt;/a&gt;&lt;br&gt;
More setup config&lt;/p&gt;

&lt;p&gt;Step 2: Configuring Service Access&lt;/p&gt;

&lt;p&gt;In this section, we will configure the necessary IAM roles for Elastic Beanstalk and EC2. Follow these steps:&lt;/p&gt;

&lt;p&gt;For the service role, select "Create and use a new service role." This will automatically create a new role with the required permissions.&lt;/p&gt;

&lt;p&gt;If you wish to SSH into your EC2 instance via the terminal, create a key-value pair and select it. If not, you can skip this step.&lt;/p&gt;

&lt;p&gt;Create an IAM role with the following permissions: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWSElasticBeanstalkWebTier&lt;/li&gt;
&lt;li&gt;AWSElasticBeanstalkWorkerTier&lt;/li&gt;
&lt;li&gt;AWSElasticBeanstalkMulticontainerDocker&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Add the created role to the "EC2 instance profile."&lt;/p&gt;

&lt;p&gt;Proceed to the next step.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4opagry4ecproyjq8ibz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4opagry4ecproyjq8ibz.png" alt="Elastic Beanstalk"&gt;&lt;/a&gt;&lt;br&gt;
Configure service access screen&lt;/p&gt;

&lt;p&gt;Step 3: Set up networking, database, and tags&lt;br&gt;
Now, turn on the Enable database toggle and choose mysql Engine. Fill out the other fields based on your needs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz5a30mlvch5lwspsmbtx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz5a30mlvch5lwspsmbtx.png" alt="Elastic Beanstalk"&gt;&lt;/a&gt;&lt;br&gt;
Filling out the other options&lt;/p&gt;

&lt;p&gt;Be super careful while selecting the "Database deletion policy". As I'm creating the sample app I selected the Delete option which will delete the database when the Elastic Beanstalk application is deleted.&lt;/p&gt;

&lt;p&gt;If you're working on a production database, it's always a best practice to choose the Create Snapshot or Retain option.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Firbd7ik6eu7esvez8t6u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Firbd7ik6eu7esvez8t6u.png" alt="Elastic Beanstalk"&gt;&lt;/a&gt;&lt;br&gt;
Database deletion policy&lt;/p&gt;

&lt;p&gt;Step 4: Configure instance traffic and scaling&lt;br&gt;
You don't need to change anything here unless you particularly need it. If you're building this sample app, leave the fields with default values. By default Elastic Beanstalk will create an Amazon Linux machine.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo0sxdzl8x39ure5izht2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo0sxdzl8x39ure5izht2.png" alt="Elastic Beanstalk"&gt;&lt;/a&gt;&lt;br&gt;
You can leave the default values unless you need someting in particular.&lt;/p&gt;

&lt;p&gt;Step 5: Configure updates, monitoring and logging&lt;br&gt;
Choose &lt;code&gt;Basic&lt;/code&gt; in "Health reporting" and uncheck Managed updates activation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fia3ksytklcvbj9qgsv4m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fia3ksytklcvbj9qgsv4m.png" alt="Elastic Beanstalk"&gt;&lt;/a&gt;&lt;br&gt;
More config&lt;/p&gt;

&lt;p&gt;Add your environment variables and click Next.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F751mfw18u2nju8kzsat1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F751mfw18u2nju8kzsat1.png" alt="Elastic Beanstalk"&gt;&lt;/a&gt;&lt;br&gt;
Add environment variables&lt;/p&gt;

&lt;p&gt;Finally, review all your configurations and proceed with next. It takes time to provision the RDS, so feel free to grab a glass of coffee&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjgqf6w2v9mfr33c3msco.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjgqf6w2v9mfr33c3msco.png" alt="Elastic Beanstalk Configuration"&gt;&lt;/a&gt;&lt;br&gt;
Review config and proceed when ready.&lt;/p&gt;

&lt;p&gt;Once you have completed all the necessary configurations, you should observe that the health status of your Elastic Beanstalk application turns green, indicating a successful deployment. Additionally, a domain URL will be generated for your application, which you can use to access it.&lt;/p&gt;

&lt;p&gt;Celebrate the achievement of a successful deployment with the green health status 🎉, and rejoice as you receive your generated domain URL 🥳.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj5yxngqbalrh0tnqwjj6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj5yxngqbalrh0tnqwjj6.png" alt="Elastic Beanstalk App"&gt;&lt;/a&gt;&lt;br&gt;
Success!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhmae5gvqfh7npwxglx2k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhmae5gvqfh7npwxglx2k.png" alt="Elastic Beanstalk App"&gt;&lt;/a&gt;&lt;br&gt;
When you hit the domain-url/ you should see your application load fine.&lt;/p&gt;

&lt;p&gt;Conclusion&lt;br&gt;
In this article, we've successfully deployed a NodeJS app with an RDS connection using AWS Elastic Beanstalk. This powerful service simplifies the deployment and management process, allowing you to focus on developing and scaling your applications.&lt;/p&gt;

&lt;p&gt;If you are stuck at any point feel free to drop your comments below. I'll be happy to help.&lt;/p&gt;

&lt;p&gt;Hope you enjoyed reading this article!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>aws</category>
      <category>node</category>
      <category>elasticbeanstalk</category>
    </item>
    <item>
      <title>Exploring the Comprehensive Security Services in AWS</title>
      <dc:creator>Idris Adeniji</dc:creator>
      <pubDate>Fri, 23 Jun 2023 01:26:50 +0000</pubDate>
      <link>https://dev.to/alvacoder/exploring-the-comprehensive-security-services-in-aws-3obf</link>
      <guid>https://dev.to/alvacoder/exploring-the-comprehensive-security-services-in-aws-3obf</guid>
      <description>&lt;p&gt;Early this year, I made up my mind to put up a lot of materials regarding Security (Cloud, Infrastructure and Application) because there is a pressing need not just to build products but to build them securely and reducing users risk to the barest minimum.&lt;/p&gt;

&lt;p&gt;In this article, I'll take you through an overview of the various security services provided by Amazon Web Services (AWS), a leading cloud provider offering a comprehensive range of security services designed to protect data, applications, and resources. Read along as I briefly explore their functionalities and how they contribute to a secure cloud environment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DZ-ClJ-v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4oxt1hrqt837nvnbhc0x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DZ-ClJ-v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4oxt1hrqt837nvnbhc0x.png" alt="Image description" width="800" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Identity and Access Management (IAM):&lt;/strong&gt;&lt;br&gt;
IAM is a fundamental and one of the most used service which enables centralized control over AWS resource access. It facilitates the creation and management of user accounts, groups, and roles, allowing administrators to assign fine-grained permissions. IAM helps implement the principle of least privilege by implementing policy based access, ensuring that users have only the necessary access to perform their tasks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS CloudTrail:&lt;/strong&gt;&lt;br&gt;
CloudTrail provides a detailed audit trail of API calls made within an AWS account. It captures events related to account activity, including actions taken through the AWS Management Console, SDKs, command-line tools, and other AWS services. The recorded logs enable security analysis, resource change tracking, and incident response, promoting transparency and accountability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS CloudWatch:&lt;/strong&gt;&lt;br&gt;
CloudWatch is a monitoring and observability service that offers robust capabilities for collecting and analyzing operational data. From monitoring log files and metrics to setting alarms and reacting to changes in performance, CloudWatch aids in detecting and resolving security-related issues promptly. It plays a crucial role in monitoring the security posture of AWS resources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Config:&lt;/strong&gt;&lt;br&gt;
AWS Config provides a detailed inventory of the configuration of AWS resources within an account. It continuously monitors and records the configuration changes, providing a comprehensive view of resource relationships and dependencies. By establishing a baseline and evaluating configuration compliance against predefined rules, AWS Config assists in maintaining security best practices and compliance requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Security Hub:&lt;/strong&gt;&lt;br&gt;
Security Hub acts as a centralized dashboard for managing security and compliance across multiple AWS accounts. It consolidates findings from various services, including AWS GuardDuty, Amazon Inspector, and AWS Macie, providing a holistic view of security posture. With automated security checks, prioritized alerts, and integration with third-party tools, Security Hub simplifies the identification and remediation of security risks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS GuardDuty:&lt;/strong&gt;&lt;br&gt;
GuardDuty is a threat detection service that utilizes machine learning algorithms and threat intelligence to identify malicious activity within AWS environments. It continuously analyzes log data and network traffic, looking for patterns indicative of unauthorized access, compromised instances, or reconnaissance attempts. GuardDuty enhances threat visibility and assists in mitigating potential security threats.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS WAF:&lt;/strong&gt;&lt;br&gt;
Web Application Firewall (WAF) is a managed service that protects web applications from common web exploits and attacks. It allows fine-grained control over HTTP/HTTPS traffic and helps mitigate threats such as SQL injection, cross-site scripting (XSS), and distributed denial-of-service (DDoS) attacks. WAF integrates with other AWS services to provide proactive security for web applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Shield:&lt;/strong&gt;&lt;br&gt;
AWS Shield is a managed Distributed Denial of Service (DDoS) protection service that safeguards applications running on AWS against volumetric, state-exhaustion, and application layer attacks. It provides automatic protection and defends against large-scale DDoS attacks by leveraging global threat intelligence and machine learning algorithms. AWS Shield ensures the availability and performance of applications during attacks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Secrets Manager:&lt;/strong&gt;&lt;br&gt;
Secrets Manager enables secure storage and management of secrets, such as database credentials, API keys, and secure tokens. It eliminates the need for hardcoding secrets in applications, enhancing security and simplifying their rotation and management. Secrets Manager integrates seamlessly with AWS services and supports automatic secret rotation for various databases, reducing the risk of unauthorized access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon Macie:&lt;/strong&gt;&lt;br&gt;
Amazon Macie is an AI-powered service that automates the discovery, classification, and protection of sensitive data stored in AWS. It leverages machine learning algorithms to analyze data across multiple AWS services, such as Amazon S3, Amazon RDS, and Amazon Redshift, identifying personally identifiable information (PII), sensitive financial data, intellectual property, and other types of sensitive content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon Inspector:&lt;/strong&gt;&lt;br&gt;
Amazon Inspector assesses the security and compliance of applications running on AWS. It performs automated security assessments by analyzing the configuration and behavior of resources, identifying vulnerabilities, and providing actionable recommendations for remediation. Inspector helps ensure that applications adhere to security best practices and industry standards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Certificate Manager (ACM):&lt;/strong&gt;&lt;br&gt;
ACM simplifies the process of provisioning, managing, and deploying Secure Sockets Layer/Transport Layer Security (SSL/TLS) certificates for applications running on AWS. It eliminates the need to purchase and configure certificates manually, ensuring secure communication between clients and applications. ACM integrates seamlessly with other AWS services and supports certificate renewal and automatic deployment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS KMS:&lt;/strong&gt;&lt;br&gt;
AWS Key Management Service (KMS) is a managed service that aids in the creation and control of encryption keys. It enables the encryption of data at rest and in transit, protecting sensitive information stored in various AWS services. KMS provides granular access control and integrates with other AWS services to enhance data security.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Firewall Manager:&lt;/strong&gt;&lt;br&gt;
Firewall Manager simplifies the management of AWS WAF rules across multiple accounts and applications. It provides centralized control and policy enforcement for firewall rules, enabling organizations to ensure consistent security measures across their infrastructure. Firewall Manager streamlines rule creation, enforcement, and monitoring, enhancing security and compliance.&lt;/p&gt;

&lt;p&gt;Conclusion:&lt;br&gt;
Amazon Web Services offers an extensive range of security services that cater to different aspects of cloud and infrastructure security far more than is listed in this article. From identity and access management to threat detection, encryption, and compliance management, these services provide organizations and users with the tools and capabilities to build and maintain a secure cloud environment. By leveraging AWS's robust security services, businesses can ensure the protection of their data, applications, and resources, and meet their security and compliance requirements in the cloud.&lt;/p&gt;

&lt;p&gt;PS: I'll be writing a more detailed article about each of the services described here, and how to use them to achieve a more secure environment.&lt;/p&gt;

&lt;p&gt;Feel free to reach out on &lt;a href="https://linkedin.com/in/idrisadeniji"&gt;LinkedIn&lt;/a&gt; , &lt;a href="https://twitter.com/alvacoder"&gt;Twitter&lt;/a&gt; or &lt;a href="https://instagram.com/alvacoder"&gt;Instagram&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Container Security For NodeJS Applications</title>
      <dc:creator>Idris Adeniji</dc:creator>
      <pubDate>Tue, 31 Jan 2023 09:54:57 +0000</pubDate>
      <link>https://dev.to/alvacoder/container-security-for-nodejs-applications-1i7c</link>
      <guid>https://dev.to/alvacoder/container-security-for-nodejs-applications-1i7c</guid>
      <description>&lt;p&gt;Attention all developers and DevOps and DevSecOps professionals!&lt;/p&gt;

&lt;p&gt;Are you building node based apps and utilising containers ???&lt;/p&gt;

&lt;p&gt;Want to ensure the security of your containers while keeping them lightweight and fast? Look no further than Node Alpine Container Images!&lt;/p&gt;

&lt;p&gt;These images, based on the Alpine Linux distribution, offer a smaller attack surface with fewer vulnerabilities compared to larger, more feature-rich images. Alpine Linux is known for its small size and security-focused approach, making it the perfect choice for containers.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An image showing a debian based node 14 image and its equivalent alpine node 14 image.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flgdkikxl35gfi9py29jm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flgdkikxl35gfi9py29jm.png" alt="Node 14 debian security scan result" width="800" height="519"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6pa5uyb4h474pkaxs0sb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6pa5uyb4h474pkaxs0sb.png" alt="Node 14 alpine security scan result" width="800" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In addition, Node Alpine Container Images include only the necessary libraries and dependencies, reducing the risk of known vulnerabilities and minimising the need for regular security updates. This makes it easier to manage your containers and reduces the risk of security breaches.&lt;/p&gt;

&lt;p&gt;So if you're looking for a secure, efficient, and lightweight solution for your container needs, switch to Node Alpine Container Images.&lt;/p&gt;

&lt;p&gt;PS: Not saying Alpine is 100% secured, in-fact some other security tool finds few vulnerabilities on this same alpine image in my post, but it's drastically reduced when compared to other node images and when making the switch ensure that you test your application again to ensure you don't have broken features due to the change in container images.&lt;/p&gt;

&lt;p&gt;#Containers #Security #NodeAlpine #DevOps #DevSecOps #appsec #linux #building #alvacoder&lt;/p&gt;

</description>
      <category>cryptocurrency</category>
      <category>crypto</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Prevent Your Heroku Project From Sleeping Due To inactivity</title>
      <dc:creator>Idris Adeniji</dc:creator>
      <pubDate>Mon, 18 Jan 2021 10:20:40 +0000</pubDate>
      <link>https://dev.to/alvacoder/prevent-your-heroku-project-from-sleeping-due-to-inactivity-ijp</link>
      <guid>https://dev.to/alvacoder/prevent-your-heroku-project-from-sleeping-due-to-inactivity-ijp</guid>
      <description>&lt;p&gt;Its no news that Heroku puts your app to sleep after an hour of been idle (when there is no traffic/visit on your app). It takes around 5 to 10 seconds to spin your app back to life, this is known as a cold start and may not be ideal especially if its a hiring manager or recruiter checking out your portfolio/project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--y7B6A2K7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/u5obiewbt0kga1iebbq3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--y7B6A2K7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/u5obiewbt0kga1iebbq3.png" alt="Alt Text" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is a tool you can use to regularly ping your heroku project to prevent it from going into sleep mode. Its called &lt;strong&gt;Kaffeine.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Currently Heroku requires all free hosted application to have a sleep time of 6 hours daily.&lt;/p&gt;

&lt;p&gt;With &lt;strong&gt;Kaffeine&lt;/strong&gt;, you can decide what time your app sleeps and keep it awake for the rest of the day.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kaffeine.herokuapp.com"&gt;Click here&lt;/a&gt; to check out this free tool, Kaffeine.&lt;/p&gt;

</description>
      <category>heroku</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
