<?php
session_start();// توليد توكن CSRF عند بدء الجلسةif(empty($_SESSION['token'])){
$_SESSION['token']= bin2hex(random_bytes(32));}// الاتصال بقاعدة البيانات
$servername ="localhost";
$username ="root";
$password ="";
$dbname ="test_db";
$conn =new mysqli($servername, $username, $password, $dbname);// تحقق من الاتصالif($conn->connect_error){
error_log("فشل الاتصال: ". $conn->connect_error);// سجل الخطأ في ملف السجلdie("حدث خطأ أثناء الاتصال بقاعدة البيانات.");}// تسجيل المستخدمif(isset($_POST['register'])){// التحقق من توكن CSRFif(!hash_equals($_SESSION['token'], $_POST['token'])){die("خطأ: التوكن غير صحيح.");}// التحقق من المدخلات
$username = trim($_POST['username']);
$password = $_POST['password'];// التحقق من طول اسم المستخدم (من 3 إلى 20 حرف)if(strlen($username)<3|| strlen($username)>20){die("خطأ: يجب أن يكون اسم المستخدم بين 3 و 20 حرفًا.");}// التحقق من وجود رموز غير مسموح بها في اسم المستخدمif(!preg_match('/^[a-zA-Z0-9_]+$/', $username)){die("خطأ: اسم المستخدم يمكن أن يحتوي على أحرف إنجليزية وأرقام وشرطة سفلية فقط.");}// التحقق من طول كلمة المرور (يجب أن تكون على الأقل 8 أحرف)if(strlen($password)<8){die("خطأ: يجب أن تكون كلمة المرور على الأقل 8 أحرف.");}// تشفير كلمة المرور
$hashed_password = password_hash($password, PASSWORD_DEFAULT);// استخدام إعدادات مستعدة للحماية من SQL Injection
$stmt = $conn->prepare("INSERT INTO users (username, password) VALUES (?, ?)");if($stmt){// ربط المتغيرات
$stmt->bind_param("ss", $username, $hashed_password);// تنفيذ الاستعلامif($stmt->execute()){
echo "تم التسجيل بنجاح!<br>";
echo "اسم المستخدم المدخل: ". htmlspecialchars($username, ENT_QUOTES,'UTF-8');}else{
error_log("خطأ أثناء تنفيذ الاستعلام: ". $stmt->error);// سجل الخطأ في ملف السجل
echo "حدث خطأ أثناء التسجيل. يرجى المحاولة لاحقًا.";}// إغلاق البيان
$stmt->close();}else{
error_log("خطأ في التحضير: ". $conn->error);// سجل الخطأ في ملف السجل
echo "حدث خطأ أثناء معالجة الطلب.";}}
$conn->close();?><!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>تسجيل الاشتراك</title></head><body><h2>تسجيل الاشتراك</h2><formmethod="post"action=""><inputtype="text"name="username"placeholder="اسم المستخدم"required><br><inputtype="password"name="password"placeholder="كلمة المرور"required><br>
<input type="hidden" name="token" value="<?= htmlspecialchars($_SESSION['token'], ENT_QUOTES,'UTF-8')?>">
<buttontype="submit"name="register">تسجيل</button></form></body></html>
اريد التاكد هل تم حمابته من بعض الثغرات المستخدمه في الكود
تم التعديل في بواسطة Mustafa Suleiman تعديل عنوان السؤال ونص السؤال
السؤال
Ayman Abdullah3
اريد التاكد هل تم حمابته من بعض الثغرات المستخدمه في الكود
تم التعديل في بواسطة Mustafa Suleimanتعديل عنوان السؤال ونص السؤال
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.