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: nosniffX-Frame-Options: DENYStrict-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)
- استخدم
SameSitecookies. - استخدم 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?