<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Security on ilham.dev</title><link>https://ilham.dev/tags/security/</link><description>Recent content in Security on ilham.dev</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Sun, 27 Sep 2026 00:00:00 +0700</lastBuildDate><atom:link href="https://ilham.dev/tags/security/index.xml" rel="self" type="application/rss+xml"/><item><title>How I build an HTTP header block without forgetting security headers</title><link>https://ilham.dev/posts/how-to-build-an-http-header-block/</link><pubDate>Sun, 27 Sep 2026 00:00:00 +0700</pubDate><guid>https://ilham.dev/posts/how-to-build-an-http-header-block/</guid><description>Building headers from key/value rows helps avoid typo-heavy manual header blocks.
I use HTTP Header Builder for the quick version of this task, then I review the output before relying on it.</description></item><item><title>How I check a file hash before trusting a download</title><link>https://ilham.dev/posts/how-to-check-a-file-hash-before-trusting-a-download/</link><pubDate>Sun, 27 Sep 2026 00:00:00 +0700</pubDate><guid>https://ilham.dev/posts/how-to-check-a-file-hash-before-trusting-a-download/</guid><description>When I download an installer, ISO image, backup, or release archive, I sometimes see a checksum published next to it:
SHA256: 4a1f... That checksum is there so I can check whether my downloaded file is exactly the same file the publisher intended to provide.</description></item><item><title>How I check a JWT when an API login looks broken</title><link>https://ilham.dev/posts/how-to-read-and-verify-jwt/</link><pubDate>Sun, 27 Sep 2026 00:00:00 +0700</pubDate><guid>https://ilham.dev/posts/how-to-read-and-verify-jwt/</guid><description>A JWT is one of those strings that looks scary the first time you see it. It often appears in a login response, browser storage, or an API request header:</description></item><item><title>How I check a PDF digital signature without confusing it with a drawn signature</title><link>https://ilham.dev/posts/how-to-check-digital-signatures-in-pdfs/</link><pubDate>Sun, 27 Sep 2026 00:00:00 +0700</pubDate><guid>https://ilham.dev/posts/how-to-check-digital-signatures-in-pdfs/</guid><description>A PDF digital signature is cryptographic metadata. It is not the same thing as an image of a handwritten signature placed on a page.
The PDF Signature Checker tool gives me a safe place to test the idea before I put it into a script, server, or production workflow.</description></item><item><title>How I check password strength without fooling myself</title><link>https://ilham.dev/posts/how-to-check-password-strength-without-fooling-yourself/</link><pubDate>Sun, 27 Sep 2026 00:00:00 +0700</pubDate><guid>https://ilham.dev/posts/how-to-check-password-strength-without-fooling-yourself/</guid><description>Password strength is easy to misunderstand. A password can look complicated but still be weak if it is short or predictable.
The Password Strength tool estimates how hard a password may be to guess under stated assumptions.</description></item><item><title>How I check whether an RSA public key and private key belong together</title><link>https://ilham.dev/posts/how-to-check-whether-rsa-keys-match/</link><pubDate>Sun, 27 Sep 2026 00:00:00 +0700</pubDate><guid>https://ilham.dev/posts/how-to-check-whether-rsa-keys-match/</guid><description>RSA uses a pair of keys. The private key signs or decrypts. The public key verifies or encrypts. The two keys are related, but the public key should not reveal the private key.</description></item><item><title>How I create and check HMAC signatures for API requests</title><link>https://ilham.dev/posts/how-to-create-and-check-hmac-signatures/</link><pubDate>Sun, 27 Sep 2026 00:00:00 +0700</pubDate><guid>https://ilham.dev/posts/how-to-create-and-check-hmac-signatures/</guid><description>HMAC proves that a message was created by someone who knows the shared secret, and that the signed message has not changed.
The HMAC Generator tool gives me a safe place to test the idea before I put it into a script, server, or production workflow.</description></item><item><title>How I decode Outlook SafeLinks before clicking a suspicious URL</title><link>https://ilham.dev/posts/how-to-decode-outlook-safelinks-before-clicking/</link><pubDate>Sun, 27 Sep 2026 00:00:00 +0700</pubDate><guid>https://ilham.dev/posts/how-to-decode-outlook-safelinks-before-clicking/</guid><description>Outlook SafeLinks wrap a destination URL inside a Microsoft protection URL. Decoding helps reveal where the link wants to go.
The SafeLink Decoder tool helps with the mechanical part, but I still check the result before using it somewhere real.</description></item><item><title>How I escape HTML entities before showing text on a page</title><link>https://ilham.dev/posts/how-to-escape-html-entities-before-showing-text/</link><pubDate>Sun, 27 Sep 2026 00:00:00 +0700</pubDate><guid>https://ilham.dev/posts/how-to-escape-html-entities-before-showing-text/</guid><description>HTML entities let text contain characters like &amp;lt;, &amp;gt;, and &amp;amp; without the browser treating them as markup.
The HTML Entities tool helps with the mechanical part, but I still check the result before using it somewhere real.</description></item><item><title>How I generate random tokens with enough entropy</title><link>https://ilham.dev/posts/how-to-generate-random-tokens-with-enough-entropy/</link><pubDate>Sun, 27 Sep 2026 00:00:00 +0700</pubDate><guid>https://ilham.dev/posts/how-to-generate-random-tokens-with-enough-entropy/</guid><description>A good token should be random enough that guessing it is unrealistic.
The Token Generator tool helps with the mechanical part, but I still check the result before using it somewhere real.</description></item><item><title>How I generate SSH keys without losing track of what each file is</title><link>https://ilham.dev/posts/how-to-generate-ssh-keys-safely/</link><pubDate>Sun, 27 Sep 2026 00:00:00 +0700</pubDate><guid>https://ilham.dev/posts/how-to-generate-ssh-keys-safely/</guid><description>An SSH key pair has two parts: a private key that stays with you, and a public key that you can place on servers in authorized_keys.
The SSH Key Generator tool gives me a safe place to test the idea before I put it into a script, server, or production workflow.</description></item><item><title>How I read email headers when a message looks suspicious</title><link>https://ilham.dev/posts/how-to-read-email-headers/</link><pubDate>Sun, 27 Sep 2026 00:00:00 +0700</pubDate><guid>https://ilham.dev/posts/how-to-read-email-headers/</guid><description>An email header is the technical history of a message. It can show where the message claimed to come from, which servers handled it, and whether authentication checks passed.
The visible email body can be misleading.</description></item><item><title>How I test webhooks before trusting them</title><link>https://ilham.dev/posts/how-to-test-webhooks-safely/</link><pubDate>Sun, 27 Sep 2026 00:00:00 +0700</pubDate><guid>https://ilham.dev/posts/how-to-test-webhooks-safely/</guid><description>A webhook is a simple idea: one system sends an HTTP request to another system when something happens.
For example:
Stripe sends a webhook when a payment succeeds; GitHub sends a webhook when someone pushes code; Shopify sends a webhook when an order is created.</description></item><item><title>How I think about bcrypt when storing passwords</title><link>https://ilham.dev/posts/how-to-hash-passwords-with-bcrypt/</link><pubDate>Sun, 27 Sep 2026 00:00:00 +0700</pubDate><guid>https://ilham.dev/posts/how-to-hash-passwords-with-bcrypt/</guid><description>Passwords should not be stored as plain text. If a database leaks, plain text passwords immediately become everyone else&amp;rsquo;s problem too.
For password storage, I want a password hashing function such as bcrypt.</description></item><item><title>How I think about BIP39 seed phrases before touching a wallet</title><link>https://ilham.dev/posts/how-to-understand-bip39-seed-phrases/</link><pubDate>Sun, 27 Sep 2026 00:00:00 +0700</pubDate><guid>https://ilham.dev/posts/how-to-understand-bip39-seed-phrases/</guid><description>A BIP39 mnemonic is a human-readable backup for wallet seed material. Anyone who has the words can often control the wallet.
The BIP39 Mnemonic tool gives me a safe place to test the idea before I put it into a script, server, or production workflow.</description></item><item><title>How I understand OTP codes without treating them like magic</title><link>https://ilham.dev/posts/how-to-use-otp-codes-without-mystery/</link><pubDate>Sun, 27 Sep 2026 00:00:00 +0700</pubDate><guid>https://ilham.dev/posts/how-to-use-otp-codes-without-mystery/</guid><description>Most authenticator apps use TOTP: a short code generated from a shared secret and the current time.
The OTP Generator tool gives me a safe place to test the idea before I put it into a script, server, or production workflow.</description></item><item><title>How I understand SNAP BI asymmetric signatures step by step</title><link>https://ilham.dev/posts/how-to-understand-snap-bi-asymmetric-signature/</link><pubDate>Sun, 27 Sep 2026 00:00:00 +0700</pubDate><guid>https://ilham.dev/posts/how-to-understand-snap-bi-asymmetric-signature/</guid><description>SNAP BI signatures can feel confusing because they combine several ideas at once:
HTTP method; URL path; request body hash; timestamp; RSA private and public keys; a signature header. When all of those appear together, it is easy to get lost.</description></item><item><title>How I use AES encryption without confusing it with hashing</title><link>https://ilham.dev/posts/how-to-use-aes-encryption-for-text/</link><pubDate>Sun, 27 Sep 2026 00:00:00 +0700</pubDate><guid>https://ilham.dev/posts/how-to-use-aes-encryption-for-text/</guid><description>AES is for keeping text confidential. It is different from hashing: encrypted text is meant to be decrypted later with the right key, while a hash is not meant to be reversed.</description></item></channel></rss>