CSRF Protect API

CSRF Protect API adalah solusi API yang dirancang untuk melawan serangan CSRF dengan menyediakan token keamanan yang harus disertakan dalam permintaan POST.

Download Demo

DOKUMENTASI API

URL Dasar

https://csrf.i-as.dev

Endpoint

1. Mendapatkan Token CSRF

  • Endpoint: /csrf-token
  • Metode: GET
  • Deskripsi: Menghasilkan token CSRF baru.
  • Respons:
  • {
       "token": "<csrf-token>"
    }
  • Permintaan:
  • GET https://csrf.i-as.dev/csrf-token
  • Curl:
  • curl -X GET https://csrf.i-as.dev/csrf-token

2. Mengirim Data dengan Token CSRF

  • Endpoint: /secure-data
  • Metode: POST
  • Deskripsi: Menerima data secara aman dengan perlindungan CSRF.
  • Header:
  • Content-Type: application/json
    x-csrf-token: <csrf-token>
  • Body:
  • {
       "key": "value"
    }
  • Respons:
  • {
       "message": "Data received"
    }
  • Permintaan:
  • POST https://csrf.i-as.dev/secure-data
       Content-Type: application/json
       x-csrf-token: <csrf-token>
    
    {
       "key": "value"
    }
  • Curl:
  • curl -X POST https://csrf.i-as.dev/secure-data \
       -H "Content-Type: application/json" \
       -H "x-csrf-token: {csrf-token}" \
       -d '{"key": "value"}'

3. Respons Error

  • Token Kedaluwarsa:
  • {
       "error": "Token expired"
    }
  • Token Tidak Valid:
  • {
       "error": "Invalid token"
    }

4. Contoh Penggunaan

  • fetch di JavaScript
  • // Mendapatkan token CSRF
    async function getCsrfToken() {
    	try {
    		const response = await fetch('https://csrf.i-as.dev/csrf-token');
    		const data = await response.json();
    		return data.token;
    	} catch (error) {
    		console.error('Error fetching CSRF token:', error);
    	}
    }
    
    // Mengirim data dengan token CSRF
    async function sendData() {
    	const token = await getCsrfToken();
    	if (token) {
    		try {
    			const response = await fetch('https://csrf.i-as.dev/secure-data', {
    				method: 'POST',
    				headers: {
    					'Content-Type': 'application/json',
    					'x-csrf-token': token
    				},
    				body: JSON.stringify({ key: 'value' })
    			});
    			const data = await response.json();
    			console.log('Response:', data);
    		} catch (error) {
    			console.error('Error sending data:', error);
    		}
    	}
    }
    
    sendData();
  • requests di Python
  • import requests
    
    # Mendapatkan token CSRF
    def get_csrf_token():
    	response = requests.get('https://csrf.i-as.dev/csrf-token')
    	response.raise_for_status()
    	data = response.json()
    	return data['token']
    	# Mengirim data dengan token CSRF
    def send_data():
    	token = get_csrf_token()
    	headers = {
    		'Content-Type': 'application/json',
    		'x-csrf-token': token
    	}
    	data = {'key': 'value'}
    	response = requests.post('https://csrf.i-as.dev/secure-data', json=data, headers=headers)
    	response.raise_for_status()
    	print('Response:', response.json())
    
    send_data()
  • axios di Node.js
  • const axios = require('axios');
    
    // Mendapatkan token CSRF
    async function getCsrfToken() {
    	try {
    		const response = await axios.get('https://csrf.i-as.dev/csrf-token');
    		return response.data.token;
    	} catch (error) {
    		console.error('Error fetching CSRF token:', error);
    	}
    }
    
    // Mengirim data dengan token CSRF
    async function sendData() {
    	const token = await getCsrfToken();
    	if (token) {
    		try {
    			const response = await axios.post('https://csrf.i-as.dev/secure-data', 
    				{ key: 'value' }, 
    				{ 
    					headers: { 
    						'Content-Type': 'application/json',
    						'x-csrf-token': token
    					} 
    				}
    			);
    			console.log('Response:', response.data);
    		} catch (error) {
    			console.error('Error sending data:', error);
    		}
    	}
    }
    
    sendData();

©2024 I-As.Dev. All Rights Reserved.