An open API service indexing awesome lists of open source software.

https://github.com/tichavich/csrf-token-php

cross-site request forgery (CSRF)
https://github.com/tichavich/csrf-token-php

csrf csrf-tokens php php-sessions php8

Last synced: 8 days ago
JSON representation

cross-site request forgery (CSRF)

Awesome Lists containing this project

README

          

# CSRF-Token-PHP
cross-site request forgery (CSRF)

## Table of content

1. [CSRF คืออะไร](#CSRF)
2. [ฟังก์ชั่นที่สำคัญ](#function)
3. [วิธีการใช้งาน](#manual-guide)

# CSRF คืออะไร ?
CSRF ย่อมาจาก Cross-Site Request Forgery เป็นช่องโหว่ที่เกิดขึ้นเมื่อผู้ไม่ประสงค์ดีส่งคำขอ (request) จากเว็บไซต์อื่น (ที่ไม่ได้รับอนุญาต) ไปยังเว็บไซต์ที่ผู้ใช้งานได้เข้าถึงอยู่ โดยใช้ความเชื่อมต่อที่ผู้ใช้งานสามารถเข้าถึงได้เพื่อกระทำการที่ไม่พึงประสงค์ เช่น การเปลี่ยนแปลงข้อมูลส่วนตัว การเพิ่มข้อมูล หรือการกระทำคำสั่งอื่นๆ ที่สามารถทำให้เกิดผลกระทบในระบบของผู้ใช้งานหรือเว็บไซต์นั้นๆ

# ฟังก์ชั่นที่สำคัญ
- ฟังก์ชัน hash_equals ใช้สำหรับเปรียบเทียบสตริงของค่าแฮชแบบแข็งแรง (hash) แบบคงเดิม (constant-time comparison) โดยไม่สนใจความยาวของสตริง และมีการป้องกันการโจมตีแบบแฝงข้อความ (timing attacks) ซึ่งเป็นวิธีการโจมตีที่ใช้เวลาเพิ่มเติมในการประมวลผลเมื่อเปรียบเทียบสตริง
- ฟังก์ชัน bin2hex ใช้สำหรับแปลงข้อมูลในรูปแบบ binary เป็นข้อความฐานสิบหก (hexadecimal) ซึ่งมักจะใช้ในการเข้ารหัสข้อมูลเช่นในการเข้ารหัสข้อมูลไบนารีเป็นข้อความที่อ่านได้ หรือการเข้ารหัสข้อมูลในรูปแบบที่ไม่มีอักขระพิเศษใน URL ด้วยเอง เป็นต้น
- ฟังก์ชัน random_bytes(): ใช้สร้างข้อมูลสุ่มโดยใช้เครื่องมือสุ่มในระบบปฏิบัติการ (operating system's CSPRNG - Cryptographically Secure Pseudo-Random Number Generator) ที่มีความปลอดภัยสูง ข้อมูลที่สร้างขึ้นมาจะเป็นข้อมูลที่สุ่มจริงที่มีความเสมือนจริงและปลอดภัยในการใช้งาน.

# วิธีใช้งาน
- Client
> แบบที่ 1 สร้าง token key แปะไว้ในส่วน Head
```

```
Result :
```





..




```
> แบบที่ 2 สร้าง token key เก็บลง input hidden
```

```
Result :
```



```

- Server
> ส่ง token key มาที่ Server
```
$.ajax({
headers: {
'X-CSRF-TOKEN': document.querySelector(`meta[name="csrf_token"]`).getAttribute('content')
},
url: "...",
method: "GET",
data: {id:453}
};
```
> ตรวจสอบ token key
```

```