# OWASP Top 10 2025: Apa yang Berubah dan Kenapa Penting

> Analisis komprehensif terhadap perubahan OWASP Top 10:2025, termasuk entri baru dan risiko keamanan modern untuk aplikasi web.

**URL:** https://www.ciptadusa.com/blog/owasp-top-10-2025-changes-analysis  
**Type:** blog  
**Author:** PT Cipta Dua Saudara  
**Category:** Keamanan Aplikasi  
**Published:** 2026-05-30  
**Cover:** https://www.ciptadusa.com/media/defaults/blog-cover.svg  

## Article

# OWASP Top 10 2025: Apa yang Berubah dan Mengapa Itu Penting

## Ringkasan

Proyek Keamanan Aplikasi Web Terbuka (OWASP) telah merilis 10 Risiko Keamanan Aplikasi Web Teratas edisi tahun 2025. Daftar yang diperbarui ini mencerminkan lanskap ancaman yang terus berkembang dan memberikan panduan yang dapat ditindaklanjuti kepada developer untuk membangun aplikasi yang aman.

## Perubahan Penting pada tahun 2025

### Entri Baru dan Perombakan

Daftar tahun 2025 memperkenalkan perubahan signifikan:

1. **A01:2025 - Kontrol Akses Rusak** (mempertahankan posisi teratas)
2. **A02:2025 - Kesalahan Konfigurasi Keamanan** (dipindahkan)
3. **A03:2025 - Kegagalan Supply Chain Software** (BARU)
4. **A04:2025 - Kegagalan Kriptografi** (berganti nama, menyempurnakan)
5. **A05:2025 - Injeksi** (dipertahankan)
6. **A06:2025 - Desain Tidak Aman** (dipindahkan)
7. **A07:2025 - Kegagalan Autentikasi** (disempurnakan)
8. **A08:2025 - Kegagalan Software atau Integritas Data** (diperluas)
9. **A09:2025 - Kegagalan Logging dan Monitoring** (dipertahankan)
10. **A10:2025 - Spoofing Permintaan Sisi Server** (dipertahankan)

### Perubahan Penting

#### Kegagalan Supply Chain Software (A03:2025)

Entri baru ini mencerminkan meningkatnya ancaman serangan supply chain:

- **Kebingungan Ketergantungan**: Paket berbahaya di repositori publik
- **Membangun Kompromi Sistem**: Serangan pada pipeline CI/CD
- **Kerentanan Komponen Pihak Ketiga**: Dependensi yang belum ditambal

```python
# Example: Dependency confusion attack
# requirements.txt
requests==2.28.0
# Attacker publishes malicious 'requests' package with higher version
# pip install requests==2.28.1  # Installs malicious version
```

#### Desain Tidak Aman (A06:2025)

Penekanan yang diperluas pada prinsip-prinsip keamanan berdasarkan desain:

- Pemodelan ancaman selama tahap desain
- Pola desain yang aman
- Tinjauan arsitektur keamanan

## Analisis Terperinci tentang Risiko Utama

### A01:2025 - Kontrol Akses Rusak

**Mengapa #1**: Kegagalan kontrol akses tetap menjadi kerentanan paling umum.

Masalah umum:
- Pelanggaran prinsip paling tidak istimewa
- Melewati pemeriksaan kontrol akses
- Melihat atau mengedit akun orang lain
- Mengakses API tanpa kontrol akses

```javascript
// Example: Broken access control
app.get('/api/user/:id', async (req, res) => {
    // Vulnerable: No check if user can access this profile
    const user = await User.findById(req.params.id);
    res.json(user);
});

// Secure implementation
app.get('/api/user/:id', async (req, res) => {
    const user = await User.findById(req.params.id);
    if (!user || user.id !== req.user.id) {
        return res.status(403).json({ error: 'Forbidden' });
    }
    res.json(user);
});
```

### A02:2025 - Kesalahan Konfigurasi Keamanan

**Mengapa naik**: Aplikasi cloud-native meningkatkan risiko kesalahan konfigurasi.

Kesalahan konfigurasi yang umum:
- Kredensial bawaan
- Fitur yang tidak diperlukan diaktifkan
- Header keamanan tidak ada
- CORS yang terlalu permisif

```python
# Django security settings
SECURE_BROWSER_XSS_FILTER = True
SECURE_CONTENT_TYPE_NOSNIFF = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
X_FRAME_OPTIONS = 'DENY'
```

### A03:2025 - Kegagalan Supply Chain Software

**Mengapa baru**: Serangan tingkat tinggi (SolarWinds, Log4Shell) menunjukkan dampaknya.

Strategi mitigasi:
- Bill of Material Software (SBOM)
- Pemindaian ketergantungan
- Paket yang ditandatangani
- Bangunan yang dapat direproduksi

```json
{
  "scripts": {
    "audit": "npm audit",
    "check-updates": "npx npm-check-updates"
  }
}
```

### A04:2025 - Kegagalan Kriptografi

**Berganti nama dari A02:2021**: Lebih mencerminkan sifat spesifik kegagalan.

Kegagalan umum:
- Menggunakan algoritma yang lemah (MD5, SHA1)
- Kunci berkode keras
- Manajemen kunci tidak memadai
- Enkripsi untuk data sensitif tidak ada

```go
// Insecure: Using weak hash
hash := md5.Sum(password)

// Secure: Using strong hash
import "golang.org/x/crypto/bcrypt"
hash, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost)
```

### A05:2025 - Injeksi

**Posisi dipertahankan**: Serangan injeksi masih lazim.

Jenis:
- Injeksi SQL
- Injeksi NoSQL
- Injeksi Perintah OS
- Injeksi LDAP

```php
// Vulnerable to SQL injection
$query = "SELECT * FROM users WHERE username = '$_GET[username]'";

// Secure: Using prepared statements
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->execute(['username' => $_GET['username']]);
```

### A06:2025 - Desain Tidak Aman

**Mengapa naik**: Kelemahan desain lebih sulit diperbaiki dibandingkan bug implementasi.

Mitigasi:
- Pemodelan ancaman
- Pola desain yang aman
- Arsitektur referensi
- Cerita pengguna keamanan

### A07:2025 - Kegagalan Autentikasi

**Penyempurnaan cakupan**: Fokus pada kelemahan implementasi.

Kegagalan umum:
- Persyaratan password yang lemah
- MFA tidak ada
- Fiksasi sesi
- Kerentanan isian kredensial

```javascript
// Secure authentication implementation
const rateLimit = require('express-rate-limit');
const bcrypt = require('bcrypt');

const loginLimiter = rateLimit({
    windowMs: 15 * 60 * 1000,
    max: 5,
    message: 'Too many login attempts'
});

app.post('/login', loginLimiter, async (req, res) => {
    const user = await User.findOne({ email: req.body.email });
    if (!user || !await bcrypt.compare(req.body.password, user.password)) {
        return res.status(401).json({ error: 'Invalid credentials' });
    }
    // Regenerate session
    req.session.regenerate(() => {
        req.session.userId = user.id;
        res.json({ message: 'Logged in' });
    });
});
```

### A08:2025 - Kegagalan Integritas Software atau Data

**Diperluas**: Kini mencakup keamanan pipeline CI/CD.

Resiko:
- Pembaruan yang tidak ditandatangani
- Saluran pipa CI/CD yang tidak aman
- Pembaruan otomatis tanpa verifikasi

### A09:2025 - Kegagalan Logging dan Monitoring

**Dipertahankan**: Masih penting untuk respons insiden.

Persyaratan:
- Catat peristiwa keamanan
- Melaksanakan monitoring
- Tetapkan respons insiden
- Tinjauan log reguler

### A10:2025 - Spoofing Permintaan Sisi Server

**Terjaga**: Lingkungan cloud meningkatkan risiko SSRF.

```python
# Vulnerable to SSRF
import requests

def fetch_url(url):
    return requests.get(url).text

# Secure: Validate and restrict URLs
from urllib.parse import urlparse
import ipaddress

def secure_fetch_url(url):
    parsed = urlparse(url)
    
    # Block internal IPs
    try:
        ip = ipaddress.ip_address(parsed.hostname)
        if ip.is_private or ip.is_loopback:
            raise ValueError("Internal URLs not allowed")
    except ValueError:
        pass
    
    # Whitelist allowed domains
    allowed_domains = ['api.example.com', 'cdn.example.com']
    if parsed.hostname not in allowed_domains:
        raise ValueError("Domain not allowed")
    
    return requests.get(url, timeout=5).text
```

## Menerapkan OWASP Top 10 dalam Framework Modern

### Laravel (PHP)

```php
// Security configuration
// config/session.php
'secure' => true,
'http_only' => true,
'same_site' => 'lax',

// .env
SESSION_SECURE_COOKIE=true
SESSION_HTTP_ONLY=true
```

### Django (Python)

```python
# settings.py
SECURE_BROWSER_XSS_FILTER = True
SECURE_CONTENT_TYPE_NOSNIFF = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_SSL_REDIRECT = True
```

### Ekspres.js (JavaScript)

```javascript
const helmet = require('helmet');
const cors = require('cors');

app.use(helmet());
app.use(cors({
    origin: 'https://trusted-domain.com',
    credentials: true
}));
```

### Go (Fiber)

```go
app.Use(helmet.New())
app.Use(cors.New(cors.Config{
    AllowOrigins:     "https://trusted-domain.com",
    AllowCredentials: true,
}))
```

## Penutup

OWASP Top 10:2025 mencerminkan lanskap ancaman saat ini dengan penekanan pada keamanan supply chain, desain yang aman, dan risiko cloud-native. Developer harus mengintegrasikan prinsip-prinsip ini ke seluruh siklus developeran software.

## Referensi

- [OWASP Teratas 10:2025](https://owasp.org/Top10/2025/en/)
- [10 Pendahuluan Teratas OWASP](https://owasp.org/Top10/2025/0x00_2025-Introduction/)
- [Yayasan OWASP](https://owasp.org/)

---

*Markdown version of https://www.ciptadusa.com/blog/owasp-top-10-2025-changes-analysis — generated for AI agents and LLM crawlers.*
