Python — Program Security Headers

18 hours ago 8
BOOK THIS SPACE FOR AD
ARTICLE AD

Ibnu Rusdianto

Halo, salam kenal. Nama saya Ibnu Rusdianto, saya seorang mahasiswa di Universitas Pasundan, Bandung. Saya sangat tertarik dengan dunia keamanan siber, terutama dalam pengujian penetrasi aplikasi web. Di sini, saya akan membahas “Python — Program Security Headers”

Pertama-tama, mari kita jelaskan apa itu security headers atau keamanan header pada aplikasi web. Keamanan header adalah konfigurasi yang diterapkan pada server web untuk meningkatkan keamanan aplikasi. Konfigurasi ini sangat penting karena dapat melindungi aplikasi dari berbagai ancaman dan serangan yang mungkin terjadi.

Berikut adalah beberapa jenis keamanan header yang umum digunakan pada aplikasi web:

Content-Security-Policy (CSP): Header ini digunakan untuk mencegah serangan Cross-Site Scripting (XSS) dengan menentukan sumber yang diizinkan untuk memuat konten.Strict-Transport-Security (HSTS): Header ini memastikan bahwa komunikasi antara klien dan server selalu dilakukan melalui HTTPS, sehingga mencegah serangan man-in-the-middle.X-Content-Type-Options: Header ini mencegah browser dari mengeksekusi file dengan tipe konten yang tidak sesuai, sehingga mengurangi risiko serangan.X-Frame-Options: Header ini melindungi aplikasi dari serangan Clickjacking dengan membatasi cara halaman dapat ditampilkan dalam frame.X-XSS-Protection: Header ini memberikan perlindungan terhadap serangan XSS dengan menginstruksikan browser untuk memblokir halaman yang terdeteksi mengandung skrip berbahaya.Referrer-Policy: Header ini mengontrol informasi yang dikirimkan dalam header Referer saat pengguna berpindah dari satu halaman ke halaman lain.Feature-Policy: Header ini memungkinkan pengembang untuk mengontrol fitur-fitur tertentu yang dapat digunakan oleh aplikasi web.Permissions-Policy: Header ini menggantikan Feature-Policy dan memberikan kontrol lebih lanjut terhadap fitur yang diizinkan untuk digunakan oleh aplikasi.Public-Key-Pins: Header ini digunakan untuk menghindari serangan man-in-the-middle dengan memastikan bahwa hanya kunci publik tertentu yang dapat digunakan untuk mengamankan koneksi.Expect-CT: Header ini memungkinkan situs web untuk mengharuskan sertifikat TLS yang valid dan mencegah penggunaan sertifikat yang tidak sah.

Setelah memahami berbagai jenis keamanan header pada aplikasi web, langkah selanjutnya adalah membuat sebuah program yang dikembangkan menggunakan Python untuk menganalisis security headers. Alat ini akan membantu melakukan analisis terhadap HTTP Response dan memeriksa keamanan header pada situs web, sehingga kita dapat mengetahui konfigurasi mana yang belum diatur atau yang hilang.

Program ini memerlukan beberapa modul Python yang harus diinstal terlebih dahulu. Berikut adalah daftar modul yang perlu diinstal:

request (pip install requests)rich (pip install rich)pyfiglet (pip install pyfiglet)

Saya harap kalian dapat menginstal semua modul yang dibutuhkan agar tidak mengalami kesalahan saat menjalankan program. Berikut adalah skrip Python untuk program security headers:

import requests
from rich.console import Console
from rich.table import Table
from rich import print
from rich.panel import Panel
from rich.text import Text
from pyfiglet import figlet_format

console = Console()

author = "buble"
tool_info = "Program ini digunakan untuk menganalisis security headers pada aplikasi web."
how_to_use = "Cara menggunakan:\n1. Jalankan program ini.\n2. Masukkan URL target yang ingin dianalisis.\n3. Program akan menampilkan security headers dan statusnya."

def analyze_security_headers(url):
try:
response = requests.get(url)
headers = response.headers

# list security headers
security_headers = {
"Content-Security-Policy": headers.get("Content-Security-Policy"),
"Strict-Transport-Security": headers.get("Strict-Transport-Security"),
"X-Content-Type-Options": headers.get("X-Content-Type-Options"),
"X-Frame-Options": headers.get("X-Frame-Options"),
"X-XSS-Protection": headers.get("X-XSS-Protection"),
"Referrer-Policy": headers.get("Referrer-Policy"),
"Feature-Policy": headers.get("Feature-Policy"),
"Permissions-Policy": headers.get("Permissions-Policy"),
"Public-Key-Pins": headers.get("Public-Key-Pins"),
"Expect-CT": headers.get("Expect-CT"),
}

return security_headers
except requests.exceptions.RequestException as e:
console.print(f"[red]Error: {e}[/red]")
return None

# tampilan hasil
def display_results(security_headers):
console.print("\n[bold cyan]Hasil Analisis Security Headers:[/bold cyan]")
table = Table(title="Security Headers Analysis", title_justify="left")
table.add_column("Header", justify="left", style="cyan", no_wrap=True)
table.add_column("Value", justify="left", style="magenta", no_wrap=True)
table.add_column("Status", justify="left", style="green", no_wrap=True)

for header, value in security_headers.items():
if value is None:
status = "[red]Missing[/red]"
else:
status = "[green]Present[/green]"
if header == "Content-Security-Policy" and "unsafe-inline" in value:
status = "[yellow]Weak (unsafe-inline detected)[/yellow]"
elif header == "Strict-Transport-Security" and "max-age=0" in value:
status = "[yellow]Weak (max-age=0 detected)[/yellow]"
elif header == "X-XSS-Protection" and value != "1; mode=block":
status = "[yellow]Weak (not set to block)[/yellow]"

table.add_row(header, str(value) if value else "N/A", status)

console.print(table)

def main():
console.print(Panel(Text(figlet_format("Security Headers Analyzer", font="slant"), style="bold cyan"), title="Tool Name"))
console.print(Panel(Text(f"Penulis: {author}\n\n{tool_info}\n\n{how_to_use}", style="bold green"), title="Informasi Tool"))

url = input("Masukkan URL target (contoh: https://example.com): ")
security_headers = analyze_security_headers(url)

if security_headers:
display_results(security_headers)

if __name__ == "__main__":
main()

Atau Anda juga bisa mengunduhnya melalui GitHub saya. Jangan lupa untuk follow saya ya :D

Read Entire Article