Agent skill

security

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/security

SKILL.md

Security Skill

نظرة عامة

دليل شامل لتأمين تطبيقات الويب وحمايتها من الثغرات الشائعة.


قائمة التحقق الأمنية (Security Checklist)

  • HTTPS: استخدم HTTPS دائماً.
  • Headers: قم بتعيين ترويسات الأمان (Security Headers).
  • Validation: تحقق من جميع المدخلات.
  • Authentication: استخدم آليات مصادقة قوية.
  • Dependencies: حدث المكتبات بانتظام.

ترويسات الأمان (Secure Headers)

استخدم مكتبة مثل helmet في Express لتعيين الترويسات تلقائياً.

typescript
import helmet from 'helmet';
app.use(helmet());

هذا يضيف ترويسات مثل:

  • X-Content-Type-Options: nosniff
  • X-Frame-Options: DENY
  • Strict-Transport-Security

حماية البيانات (Data Protection)

تخزين كلمات المرور

لا تخزن كلمات المرور كنص عادي أبداً. استخدم bcrypt أو argon2.

typescript
import bcrypt from 'bcrypt';

const saltRounds = 10;
const hash = await bcrypt.hash(password, saltRounds);

// للتحقق
const match = await bcrypt.compare(password, hash);

منع حقن SQL (SQL Injection)

استخدم ORM (مثل Prisma, TypeORM) أو Parameterized Queries دائماً.

typescript
// سيء
const query = `SELECT * FROM users WHERE id = ${id}`;

// جيد (Parameterized)
const query = 'SELECT * FROM users WHERE id = $1';
const values = [id];

حماية XSS (Cross-Site Scripting)

  • قم بتعقيم (Sanitize) المدخلات التي يتم عرضها للمستخدم.
  • React يقوم بذلك تلقائياً، لكن احذر من dangerouslySetInnerHTML.
  • استخدم Content-Security-Policy (CSP).

حماية CSRF (Cross-Site Request Forgery)

  • استخدم SameSite cookies.
  • استخدم CSRF Tokens للعمليات الحساسة إذا كنت تستخدم Cookies للمصادقة.
typescript
// إعداد الكوكيز الآمنة
res.cookie('token', token, {
  httpOnly: true,
  secure: process.env.NODE_ENV === 'production',
  sameSite: 'strict'
});

أمان رفع الملفات (File Upload Security)

  • تحقق من نوع الملف (MIME type) وامتداده.
  • لا تستخدم اسم الملف الأصلي عند الحفظ.
  • حدد حجم الملف المسموح به.
  • افحص الملفات بحثاً عن فيروسات إذا أمكن.
typescript
const upload = multer({
  limits: { fileSize: 5 * 1024 * 1024 }, // 5MB
  fileFilter: (req, file, cb) => {
    if (file.mimetype !== 'image/png' && file.mimetype !== 'image/jpeg') {
      return cb(new Error('Only images are allowed'));
    }
    cb(null, true);
  }
});

Didn't find tool you were looking for?

Be as detailed as possible for better results