<?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>Forem: Rouwel Ngacha</title>
    <description>The latest articles on Forem by Rouwel Ngacha (@rrouwelng).</description>
    <link>https://forem.com/rrouwelng</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%2F3924978%2F2d5c38e4-653e-4d1b-8628-91c93c7fd86c.png</url>
      <title>Forem: Rouwel Ngacha</title>
      <link>https://forem.com/rrouwelng</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/rrouwelng"/>
    <language>en</language>
    <item>
      <title>Device drivers : The Unsung Heroes of Your Computer</title>
      <dc:creator>Rouwel Ngacha</dc:creator>
      <pubDate>Thu, 14 May 2026 18:29:00 +0000</pubDate>
      <link>https://forem.com/rrouwelng/device-drivers-the-unsung-heroes-of-your-computer-2gdh</link>
      <guid>https://forem.com/rrouwelng/device-drivers-the-unsung-heroes-of-your-computer-2gdh</guid>
      <description>&lt;p&gt;You have probably never heard of device drivers, but without them, you would not be able to use your computer.&lt;/p&gt;

&lt;p&gt;So picture your computer &lt;/p&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%2Fpfqtgeb11bhlgkvrsakt.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%2Fpfqtgeb11bhlgkvrsakt.png" alt="Image of Laptop computer" width="469" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— you can see the keyboard, the touchpad, the power button, maybe a fingerprint sensor, and a touchscreen. For all of that hardware to function (for the keyboard to actually put letters on the screen, for the mouse to actually move and click items, for your touchscreen to work), something has to bridge the gap between the physical components and the operating system. That something is called a device driver.&lt;/p&gt;

&lt;p&gt;Device drivers are essentially the compatibility layer between a device's hardware and its software.&lt;/p&gt;

&lt;p&gt;On Windows, the graphical interface for managing drivers is called Device Manager. It is accessible by right-clicking the Windows icon and selecting "Device Manager" from the pop-up menu, and it looks like this:&lt;/p&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%2Fs5cndwiyw3qpsoc7hbg0.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%2Fs5cndwiyw3qpsoc7hbg0.png" alt="Image of Device manager" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the popular Linux distribution Ubuntu, the equivalent interface looks like this:&lt;/p&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%2Fipq75kgky2kxft7scivq.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%2Fipq75kgky2kxft7scivq.png" alt="Image of HardInfo interface on Ubuntu" width="745" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But we are just scratching the surface.&lt;br&gt;
To recap: every piece of hardware on a system requires a driver to function as intended. This includes externally connected devices.&lt;br&gt;
A good example is a printer — to use one, you first connect it to your system (laptop or desktop). In many cases, your operating system will automatically detect and install the necessary drivers for you. However, if it does not, you can manually download and install them from the manufacturer's website.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Unused Potential: Disabling and or Deleting Drivers&lt;/strong&gt;&lt;br&gt;
This brings me to a lesser-known but useful aspect of drivers. Just as you can download and install them, you can also disable or delete them. This might sound counterproductive at first, but there are situations where it becomes a practical solution.&lt;br&gt;
A problem I recently encountered was my laptop's touchscreen registering phantom presses in one corner of the screen on its own. I had two options:&lt;/p&gt;

&lt;p&gt;Option 1 — Pay to have it repaired, which is the best long-term solution.&lt;br&gt;
Option 2 — Disable the touchscreen driver entirely to stop the erratic behavior.&lt;/p&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%2Fqvyxxkg7pmfhl0s2db6m.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%2Fqvyxxkg7pmfhl0s2db6m.png" alt="Image of driver being disabled on Device manager" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Since the touchscreen is not essential to how I use my laptop, I chose to disable it. The names of all the drivers and how they affect your computer are available online, so it is advisable to search first and confirm that what you want to do is safe and achievable before proceeding. &lt;/p&gt;

&lt;p&gt;Always remember that messing with the wrong drivers could have serious consequences, such as losing Wi-Fi connectivity or being unable to use your keyboard. That said, the choice is always yours to make based on your own needs and priorities.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>computerscience</category>
      <category>learning</category>
      <category>software</category>
    </item>
    <item>
      <title>the CSRF token</title>
      <dc:creator>Rouwel Ngacha</dc:creator>
      <pubDate>Mon, 11 May 2026 18:39:13 +0000</pubDate>
      <link>https://forem.com/rrouwelng/the-csrf-token-593p</link>
      <guid>https://forem.com/rrouwelng/the-csrf-token-593p</guid>
      <description>&lt;p&gt;Hello world, my name is rrouwelng and I am here to talk about the CSRF token. &lt;/p&gt;

&lt;p&gt;So, what is a CSRF token? A Cross-Site Request Forgery token is a unique and unpredictable value generated by server-side application. This was developed as a countermeasure to the &lt;strong&gt;Cross-Site Request Forgery attack&lt;/strong&gt; that was first documented in the early 2000's. &lt;/p&gt;

&lt;p&gt;What is a &lt;strong&gt;Cross-Site Request Forgery attack&lt;/strong&gt; ? Allow me to give an example.&lt;/p&gt;

&lt;p&gt;This is Bob,&lt;/p&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%2Fj1lrnh879rc547u6jqnf.jpg" 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%2Fj1lrnh879rc547u6jqnf.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bob, logs into his bank at &lt;/p&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%2Fulq6a5yw4jutlzwlf5ks.jpg" 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%2Fulq6a5yw4jutlzwlf5ks.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bob then decided to go read an article at a certain website at &lt;/p&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%2F2vpnks4och1uvcb198l4.jpg" 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%2F2vpnks4och1uvcb198l4.jpg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please note that Bob hasn't logged out of his bank account.&lt;/p&gt;

&lt;p&gt;The site &lt;strong&gt;'welikekittens.com'&lt;/strong&gt; is set up by a malicious actor(call him swipper). &lt;/p&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%2Fh6h6xeko47lri6sotot3.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%2Fh6h6xeko47lri6sotot3.png" alt=" " width="478" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The website(welikekittens.com) is set up to send a form that is just a  POST request to Bob's bank website that basically tells it to credit a certain amount of money to the account of the attackers choosing.&lt;/p&gt;

&lt;p&gt;Because of how browsers work, every request(GET, POST or otherwise ) sent from bob's browser to the bank's server has the authentication cookies that Bob was given when he logged into the bank. This includes requests that weren't sent by Bob himself and are being sent by the malicious site.&lt;/p&gt;

&lt;p&gt;To counteract this, Bob's bank decides to use a CSRF-Token. When Bob interacts with the Bank interface, he receives a CSRF token that is embedded on the page. So now, if &lt;strong&gt;welikekittens.com&lt;/strong&gt; tries to send a request from bob's browser, the bank's server checks the form to see if the CSRF token is included in the form. &lt;/p&gt;

&lt;p&gt;Since  it is not included the request is automatically denied because the request doesn't include the CSRF token.  As a bonus because of the Same-Origin Policy(basically means that one website cannot read the contents of another website unless they are from the same host. Feel free to look it up) &lt;strong&gt;welikekittens.com&lt;/strong&gt; is unable to see the token and bob's bank account is safe for now.&lt;/p&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%2F4xb9al3tj93v7o2mr1u1.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%2F4xb9al3tj93v7o2mr1u1.png" alt=" " width="444" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And that is CSRF tokens in a nutshell, feel free add or discredit what I have written (with proof of course :) ).&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>cybersecurity</category>
      <category>security</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
