สคริปต์นี้เป็นตัวอย่างการตรวจจับ SQL Injection และ JavaScript Injection ในข้อมูลที่ได้รับจากผู้ใช้งานผ่านทาง POST และ GET requests โดยใช้ภาษา PHP เพื่อช่วยป้องกันความปลอดภัยในแอปพลิเคชันของคุณ
- ตรวจจับคำสั่งที่มักเกี่ยวข้องกับ SQL Injection เช่น
SELECT,UNION,INSERT,DROP, และคำสั่งอื่น ๆ - ตรวจจับโค้ด JavaScript Injection เช่น
<script>,onerror,javascript:และคำสั่งอื่น ๆ ที่เป็นอันตราย - ใช้ฟังก์ชัน
preg_match()ในการตรวจจับคำที่มีความเสี่ยงในข้อมูลที่ได้รับจาก POST และ GET
- วางไฟล์ PHP นี้ในโฟลเดอร์โปรเจกต์ของคุณ
- เรียกใช้งานโดยการส่งข้อมูลผ่าน POST หรือ GET
- สคริปต์จะทำการตรวจสอบข้อมูล และแสดงผลว่า พบคำที่อาจเป็นอันตราย หรือไม่
- ฟังก์ชันนี้ใช้เพื่อตรวจจับคำหรือรูปแบบที่เกี่ยวข้องกับ SQL Injection และ JavaScript Injection
- ใช้
preg_match()เพื่อค้นหารูปแบบที่ตรงกับ$patterns
function detectSQLInjection($input) {
$patterns = [
// ตัวอย่างรูปแบบที่ตรวจจับ
'/\bSELECT\b/i',
'/\bUNION\b/i',
'/<script\b[^>]*>/i',
'/\bon\w+=/i'
// เพิ่มรูปแบบตามที่ต้องการ
];
foreach ($patterns as $pattern) {
if (preg_match($pattern, $input)) {
return true;
}
}
return false;
}- ฟังก์ชันนี้ตรวจสอบข้อมูลที่รับมาจาก POST และ GET
- หากพบคำต้องสงสัย จะส่งข้อความแจ้งเตือนว่าพบ SQL Injection ในคีย์ที่ระบุ
No SQL Injection Detected.
SQL Injection Detected in POST: username
- เพิ่มฟังก์ชันนี้ในไฟล์ PHP ที่ต้องการ
- ใช้ร่วมกับการ Sanitize ข้อมูลผู้ใช้ เช่น
htmlspecialchars()หรือmysqli_real_escape_string()เพื่อเพิ่มความปลอดภัย - ใช้ Library หรือ Framework เช่น PDO หรือ ORM เพื่อป้องกัน SQL Injection อย่างเป็นระบบ
- ฟังก์ชันนี้เป็นการตรวจจับเบื้องต้นเท่านั้น หากต้องการความปลอดภัยที่สมบูรณ์ ควรใช้วิธีการป้องกันที่เหมาะสมเพิ่มเติม เช่น การใช้ Prepared Statements หรือ Frameworks ที่มีระบบความปลอดภัยในตัว
- ควรอัปเดตรูปแบบคำต้องสงสัย (
$patterns) ตามความเสี่ยงที่อาจเกิดขึ้นในแอปพลิเคชันของคุณ
คุณสามารถใช้และปรับแต่งโค้ดนี้ได้ฟรีเพื่อการศึกษาและพัฒนาระบบความปลอดภัยในแอปพลิเคชันของคุณ