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)
- Host: GitHub
- URL: https://github.com/tichavich/csrf-token-php
- Owner: tichavich
- License: mit
- Created: 2024-04-08T19:01:31.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-10T20:06:15.000Z (about 2 years ago)
- Last Synced: 2025-02-24T02:50:55.903Z (over 1 year ago)
- Topics: csrf, csrf-tokens, php, php-sessions, php8
- Language: PHP
- Homepage:
- Size: 11.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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
```
```