تطوير الواجهة الخلفية 2 دقيقة للقراءة 1,311 مشاهدات

بناء واجهات برمجة تطبيقات آمنة مع Laravel 11: المصادقة والتفويض وأفضل الممارسات

دليل شامل لبناء واجهات برمجة تطبيقات آمنة وجاهزة للإنتاج مع Laravel 11. تعلّم عن Sanctum وتحديد المعدل والتحقق من المدخلات.

Code on computer screen

يواصل Laravel كونه أحد أكثر الأطر شيوعاً لبناء الواجهات البرمجية، ويجلب الإصدار 11 أدوات أكثر لإنشاء خوادم آمنة وعالية الأداء. يغطّي هذا الدليل كل شيء من إعداد المصادقة إلى أفضل ممارسات الأمان.

إعداد Laravel Sanctum لمصادقة الواجهة البرمجية

يوفّر Sanctum نظام مصادقة خفيفاً مثالياً لتطبيقات الصفحة الواحدة وتطبيقات الجوال:

// Install Sanctum
composer require laravel/sanctum

// Publish configuration
php artisan vendor:publish --provider="Laravel\\Sanctum\\SanctumServiceProvider"

// Run migrations
php artisan migrate

تطبيق المصادقة القائمة على الرموز

// app/Http/Controllers/AuthController.php
class AuthController extends Controller
{
    public function login(Request $request)
    {
        $request->validate([
            'email' => 'required|email',
            'password' => 'required'
        ]);

        $user = User::where('email', $request->email)->first();

        if (!$user || !Hash::check($request->password, $user->password)) {
            return response()->json([
                'message' => 'Invalid credentials'
            ], 401);
        }

        $token = $user->createToken('api-token')->plainTextToken;

        return response()->json([
            'user' => $user,
            'token' => $token
        ]);
    }

    public function logout(Request $request)
    {
        $request->user()->currentAccessToken()->delete();

        return response()->json(['message' => 'Logged out']);
    }
}

تحديد المعدّل

احمِ واجهتك البرمجية من إساءة الاستخدام باستخدام تحديد المعدّل المدمج في Laravel:

// app/Providers/RouteServiceProvider.php
protected function configureRateLimiting()
{
    RateLimiter::for('api', function (Request $request) {
        return Limit::perMinute(60)->by(
            $request->user()?->id ?: $request->ip()
        );
    });

    RateLimiter::for('auth', function (Request $request) {
        return Limit::perMinute(5)->by($request->ip());
    });
}

التحقق من المدخلات وتنقيتها

تحقّق دائماً من بيانات المدخلات ونقّها:

// app/Http/Requests/CreateUserRequest.php
class CreateUserRequest extends FormRequest
{
    public function rules()
    {
        return [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'email', 'unique:users'],
            'password' => ['required', 'min:8', 'confirmed'],
            'phone' => ['nullable', 'regex:/^[0-9+\-\s]+$/'],
        ];
    }

    public function messages()
    {
        return [
            'email.unique' => 'This email is already registered.',
        ];
    }
}

أفضل ممارسات الأمان

  1. استخدم HTTPS دائماً: افرض SSL في الإنتاج
  2. طبّق CORS بشكل سليم: قيّد الأصول المسموح بها
  3. جزّئ كلمات المرور (Hash): استخدم bcrypt أو Argon2
  4. نقِّ المخرجات: امنع هجمات XSS
  5. استخدم العبارات المُحضّرة: يفعل Laravel ذلك تلقائياً
  6. طبّق تسجيل التدقيق: تتبّع العمليات الحسّاسة

إعداد CORS

// config/cors.php
return [
    'paths' => ['api/*'],
    'allowed_origins' => [env('FRONTEND_URL', 'http://localhost:3000')],
    'allowed_methods' => ['*'],
    'allowed_headers' => ['*'],
    'exposed_headers' => [],
    'max_age' => 0,
    'supports_credentials' => true,
];

إصدارات الواجهة البرمجية

// routes/api.php
Route::prefix('v1')->group(function () {
    Route::apiResource('users', UserController::class);
    Route::apiResource('posts', PostController::class);
});

Route::prefix('v2')->group(function () {
    Route::apiResource('users', V2\UserController::class);
});

بناء واجهات برمجية آمنة يتطلّب الاهتمام بالتفاصيل واتّباع الأنماط الراسخة. يوفّر Laravel أدوات ممتازة — استخدمها بحكمة.

الوسوم
مشاركة هذه المقالة:
ES
كتبه

Edrees Salih

مهندس برمجيات متكامل يتمتع بخبرة 9 سنوات. شغوف ببناء حلول قابلة للتطوير ومشاركة المعرفة مع مجتمع المطورين.

عرض الملف الشخصي

التعليقات (0)

اترك تعليقًا

لن يتم نشر بريدك الإلكتروني.

لا توجد تعليقات بعد. كن أول من يشارك أفكاره!

مقالات ذات صلة

مقالات ذات صلة

هل تحتاج مساعدة في مشروعك؟

احجز استشارة مجانية لمدة 30 دقيقة لمناقشة تحدياتك التقنية واستكشاف الحلول معًا.