يواصل 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.',
];
}
}
أفضل ممارسات الأمان
- استخدم HTTPS دائماً: افرض SSL في الإنتاج
- طبّق CORS بشكل سليم: قيّد الأصول المسموح بها
- جزّئ كلمات المرور (Hash): استخدم bcrypt أو Argon2
- نقِّ المخرجات: امنع هجمات XSS
- استخدم العبارات المُحضّرة: يفعل Laravel ذلك تلقائياً
- طبّق تسجيل التدقيق: تتبّع العمليات الحسّاسة
إعداد 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 أدوات ممتازة — استخدمها بحكمة.
التعليقات (0)
اترك تعليقًا
لا توجد تعليقات بعد. كن أول من يشارك أفكاره!