មេរៀនទី៩៖ មូលដ្ឋានសុវត្ថិភាពវ៉ែប(Web Security Basics)
មេរៀននេះនឹងផ្តល់នូវការណែនាំមូលដ្ឋានអំពីសុវត្ថិភាពវ៉ែប និងវិធីសាស្ត្រដែលអាចប្រើប្រាស់ដើម្បីការពារកម្មវិធីរបស់អ្នកពីការវាយប្រហារផ្សេងៗ។
បន្ទាប់ពីសិក្សាមេរៀននេះ សិស្សនឹងអាច៖ ✔️ យល់ពីគំនិតមូលដ្ឋាននៃសុវត្ថិភាពវ៉ែប
✔️ ទប់ស្កាត់ការវាយប្រហារ XSS និង SQL Injection
✔️ អនុវត្តការការពារ CSRF
✔️ គ្រប់គ្រង Session និង Authentication យ៉ាងមានសុវត្ថិភាព
✔️ អនុវត្តចំណេះដឹងក្នុងការធ្វើគម្រោងជាក់ស្តែង
- ការពារទិន្នន័យអ្នកប្រើប្រាស់
- ទប់ស្កាត់ការចូលប្រើប្រាស់ដោយគ្មានការអនុញ្ញាត
- រក្សាភាពសម្ងាត់និងសុវត្ថិភាពរបស់ប្រព័ន្ធ
XSS (Cross-Site Scripting)
- ការចាក់ស្គ្រីបពីខាងក្រៅ
- អាចលួចយកទិន្នន័យអ្នកប្រើប្រាស់
SQL Injection
- ការបញ្ចូលកូដ SQL ដោយខុសច្បាប់
- អាចធ្វើឲ្យទិន្នន័យត្រូវបានលួចឬបំផ្លាញ
CSRF (Cross-Site Request Forgery)
- បង្ខំអ្នកប្រើប្រាស់ឲ្យធ្វើសកម្មភាពដោយមិនដឹងខ្លួន
<?php
// អនុវត្តសុវត្ថិភាពជាមួយ htmlspecialchars()
function safeOutput($input) {
return htmlspecialchars($input, ENT_QUOTES, 'UTF-8');
}
// ឧទាហរណ៍
$userInput = "<script>alert('Hacked!')</script>";
echo safeOutput($userInput); // លទ្ធផល: <script>alert('Hacked!')</script>
?>
<?php
// ការពារទិន្នន័យមុនបង្ហាញនៅលើទំព័រ
$comment = $_POST['comment'];
echo "<div class='comment'>" . safeOutput($comment) . "</div>";
?>
<?php
// ឧទាហរណ៍ដោយប្រើ PDO
$pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->execute(['username' => $_POST['username']]);
$user = $stmt->fetch();
?>
<?php
// ការពារដោយមិនប្រើប្រាស់អាសយដ្ឋានដោយផ្ទាល់
$unsafeQuery = "SELECT * FROM users WHERE username = '" . $_POST['username'] . "'";
// ជំនួសដោយ៖
$safeQuery = "SELECT * FROM users WHERE username = ?";
?>
<?php
// បង្កើត token
if (empty($_SESSION['csrf_token'])) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
// បញ្ចូល token ក្នុងធាតុធម្មតា
echo '<input type="hidden" name="csrf_token" value="' . $_SESSION['csrf_token'] . '">';
?>
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (!hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'])) {
die('CSRF Token មិនត្រឹមត្រូវ!');
}
// បន្តដំណើរការ...
}
?>
<?php
// កំណត់ session ដោយសុវត្ថិភាព
session_start([
'cookie_lifetime' => 86400,
'cookie_secure' => true,
'cookie_httponly' => true,
'use_strict_mode' => true
]);
?>
<?php
function authenticateUser($username, $password) {
// 1. ស្វែងរកអ្នកប្រើប្រាស់
// 2. ផ្ទៀងផ្ទាត់ពាក្យសម្ងាត់
// 3. កំណត់ session
$_SESSION['authenticated'] = true;
$_SESSION['user_id'] = $user['id'];
// 4. កំណត់ពេលវេលាផុតកំណត់
$_SESSION['last_activity'] = time();
}
?>
- ស្វែងរកចំណុចខ្វះខាតសុវត្ថិភាពក្នុងកម្មវិធីដែលបានផ្តល់
- អនុវត្តការកែលម្អ៖
- ការពារ XSS
- ទប់ស្កាត់ SQL Injection
- បន្ថែម CSRF Protection
- បង្ហាញលទ្ធផលជាក្រុម
<?php
class SecurityImprovement {
public static function secureLoginSystem() {
// កូដដែលបានកែលម្អនឹងត្រូវបានបញ្ចូលនៅទីនេះ
}
}
?>
- បង្កើតប្រព័ន្ធចុះឈ្មោះដោយសុវត្ថិភាព
- អភិវឌ្ឍកម្មវិធីគ្រប់គ្រងអ្នកប្រើប្រាស់
- សាកល្បង penetration testing លើកម្មវិធីរបស់អ្នក
- រៀនយល់ពីគំនិតមូលដ្ឋាននីមួយៗ
- អនុវត្តកូដឧទាហរណ៍ដោយខ្លួនឯង
- ធ្វើការងារក្រុមក្នុងផ្នែក Lab
- អនុវត្តនៅក្នុងគម្រោងពិតប្រាកដ