Семінари та лекції з програмного забезпечення
Підручники з програмного забезпечення => Php => Тема розпочата: Ruyag від Квт. 02, 2025, 11:26 AM
PHP веб-қосымшаларды әзірлеуде кеңінен қолданылатын тіл болғандықтан, формалар арқылы деректерді қауіпсіз өңдеу өте маңызды. Формаларды дұрыс қорғамау XSS (Cross-Site Scripting), SQL инъекциясы немесе CSRF (Cross-Site Request Forgery) сияқты қауіптерге әкелуі мүмкін. Бұл мақалада PHP формаларының қауіпсіздігін қамтамасыз ету жолдары, практикалық кеңестер және код үлгілері SEO-ға сәйкес және түсінікті түрде ұсынылады.
Неліктен PHP Формасының Қауіпсіздігі Маңызды?Веб-сайттардағы формалар пайдаланушылардан ақпарат жинау үшін қолданылады: логиндер, парольдер, электрондық пошта мекенжайлары және т.б. Егер қауіпсіздік шаралары қолданылмаса, зиянкестер осы деректерді ұрлап, жүйеге зиян келтіруі мүмкін. PHP формасының қауіпсіздігін қамтамасыз ету арқылы сіз:- Пайдаланушы деректерін қорғайсыз.
- Сайтыңыздың сенімділігін арттырасыз.
- Google сияқты іздеу жүйелерінде жақсы рейтингке ие боласыз, өйткені қауіпсіз сайттарға басымдық беріледі.
PHP Формасының Қауіпсіздігін Қамтамасыз Етудің Негізгі Қадамдары1. Деректерді Тексеру және ФильтрлеуПайдаланушы енгізген деректерді серверге жібермес бұрын тексеру керек. PHP-да filter_var() функциясы бұл үшін өте қолайлы.<?php
$email = $_POST['email'];
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Енгізілген email дұрыс: " . htmlspecialchars($email);
} else {
echo "Қате email форматы!";
}
?>
Жоғарыдағы кодта filter_var() электрондық поштаның дұрыстығын тексереді, ал htmlspecialchars() XSS шабуылдарын болдырмау үшін арнайы символдарды кодтайды.
2. SQL Инъекциясынан ҚорғауЕгер форма деректері дерекқорға жіберілсе, SQL инъекциясынан қорғану үшін дайындалған мәлімдемелерді (prepared statements) қолданыңыз.<?php
$stmt = $pdo->prepare("INSERT INTO users (username, email) VALUES (:username, :email)");
$stmt->bindParam(':username', $_POST['username']);
$stmt->bindParam(':email', $_POST['email']);
$stmt->execute();
echo "Деректер сәтті сақталды!";
?>
PDO немесе MySQLi сияқты құралдармен дайындалған мәлімдемелер зиянды SQL кодының орындалуын болдырмайды.
3. CSRF ҚорғанысыCSRF шабуылдарына қарсы формаға бірегей токен қосу керек. Токенді тексеру арқылы тек шынайы сұраулар қабылданады.<?php
session_start();
$token = bin2hex(random_bytes(32));
$_SESSION['csrf_token'] = $token;
?>
<form method="POST">
<input type="hidden" name="csrf_token" value="<?php echo $token; ?>">
<input type="text" name="username">
<input type="submit" value="Жіберу">
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if ($_POST['csrf_token'] === $_SESSION['csrf_token']) {
echo "Сұрау расталды!";
} else {
echo "CSRF токені қате!";
}
}
?>
4. XSS Шабуылдарынан ҚорғауПайдаланушы енгізген деректерді шығармас бұрын оларды тазалау керек. htmlspecialchars() функциясы бұл үшін тиімді.<?php
$input = "<script>alert('XSS');</script>";
$safe_output = htmlspecialchars($input, ENT_QUOTES, 'UTF-8');
echo $safe_output; // <script>alert('XSS');</script> ретінде шығады, бірақ орындалмайды
?>
5. Файл Жүктеу ҚауіпсіздігіЕгер форма файл жүктеуге мүмкіндік берсе, файл түрін және өлшемін тексеріңіз.<?php
if (isset($_FILES['userfile'])) {
$allowed = ['jpg', 'png', 'pdf'];
$ext = pathinfo($_FILES['userfile']['name'], PATHINFO_EXTENSION);
if (in_array($ext, $allowed) && $_FILES['userfile']['size'] < 2000000) {
move_uploaded_file($_FILES['userfile']['tmp_name'], 'uploads/' . $_FILES['userfile']['name']);
echo "Файл сәтті жүктелді!";
} else {
echo "Рұқсат етілмеген файл немесе өлшемі тым үлкен!";
}
}
?>
Қосымша Кеңестер- HTTPS қолданыңыз: Деректерді шифрлау үшін сайтыңызда SSL сертификатын орнатыңыз.
- Шектеулі рұқсаттар: Дерекқор пайдаланушысына тек қажетті рұқсаттарды беріңіз.
- Журнал жүргізу: Сұрауларды бақылау үшін логтар сақтаңыз.
ҚорытындыPHP формасының қауіпсіздігін қамтамасыз ету веб-әзірлеудің маңызды бөлігі. Жоғарыда келтірілген әдістер мен код үлгілері арқылы сіз сайтыңызды сенімді және қауіпсіз ете аласыз. Бұл шаралар сонымен қатар SEO-ны жақсартады, өйткені Google қауіпсіз сайттарды жоғары бағалайды. Егер сізге қосымша сұрақтар туындаса, PHP қауіпсіздігі бойынша тереңірек ақпарат алуға болады!