1 پاسخ

ساخت فریم ورک شبیه لاراول

سلام دوستان و استادان عزیز بنده یک فریم ورکی نوشتم با php این فریم ورک دست ساز خودم هستش و فایل هاش با اسم خودم سیو می شه csrf_token,xss,session time out managment رو کنترل می کنه از لحاظ امنیت و برایش کتابخانه Auth رو هم نوشتم و دستور های ترمینالی رو هم روش پیاده سازی کردم و راحت به دیتابیس متصل می شه و دیتابیس رو می سازه خشحال می شم که گیت هاب من رو دنبال کنید و ریپوزیتوری من رو ستاره دار کنید https://github.com/saeedtnt1234/saeedtnt_framework


ثبت پرسش جدید
دانیال جناب
تخصص : دانشجو
@yet4no 6 ساعت پیش مطرح شد
0

سعید جان دمت گرم 🙌 ساختن یه فریم‌ورک از صفر واقعاً کار بزرگیه.
من امکان فالو یا استار زدن مستقیم روی گیت‌هاب رو ندارم، اما ریپوی شما رو نگاه کردم—الآن ۶ استار داره و در README هم به امکاناتی مثل CLI (ساخت کنترلر/مدل/ویو/مایگریشن)، ابزارهای امنیتی (CSRF، XSS، مدیریت Session Timeout) و ماژول احراز هویت اشاره شده. همچنین ساختار پوشه‌ها (app/, config/, core/, public/, vendor/) مشخصه. خیلی خوبه 👏 (GitHub)

در ادامه چند نکته‌ی عملی برای جذب مشارکت، بیشتر کردن ستاره‌ها و محکم‌تر کردن پایه‌های فنی پروژه می‌گذارم:


۱) نکات امنیتی مهم (چک‌لیست سریع)

  • فایل .env: اگر عمداً نمونه گذاشتی، اسمش رو به .env.example تغییر بده و .env رو به .gitignore اضافه کن تا اطلاعات حساس لو نره. توی لیست فایل‌ها .env دیده می‌شه و بهتره نمونه‌ی امن منتشر بشه. (GitHub)
  • حداقل نسخه‌ی PHP: توی README نوشتی PHP 7.4 یا جدیدتر. چون 7.4 مدت‌هاست End-of-Life شده (امنیتی وصله نمی‌گیره)، پیشنهاد می‌کنم حداقل نسخه رو به ۸.۱ یا ۸.۲ ارتقا بدی. صفحه‌ی رسمی PHP وضعیت پشتیبانی نسخه‌ها رو نشان می‌دهد. (PHP)
  • هش پسورد: حتماً از password_hash()/password_verify() استفاده کن. اگر محیطت Argon2id رو پشتیبانی می‌کنه، گزینه‌ی امن‌تری نسبت به bcrypt محسوب می‌شه؛ اگر نه PASSWORD_DEFAULT کافی و آینده‌گراست. همچنین از password_needs_rehash() برای مهاجرت خودکار به الگوریتم بهتر استفاده کن. (PHP)
  • کوکی سشن امن:

    • HttpOnly و Secure (روی HTTPS)،
    • SameSite=Lax یا Strict با session_set_cookie_params() قبل از session_start(). (PHP)
  • CSRF: توکن‌ها را روی رویدادهای حساس بازتولید کن (مثلاً بعد از لاگین) و به صورت per-session یا per-form نگه دار؛ اعتبارسنجی فقط روی POST/PUT/DELETE انجام بشه.
  • XSS: صرفاً htmlspecialchars() بیشترِ سناریوهای HTML را پوشش می‌دهد، اما برای contextهای خاص (ویژگی‌های HTML، URL، JS inline) کافی نیست. یا یک موتور قالب با auto-escape استفاده کن یا توابع escape کانتکست-محور داشته باش.
  • Session fixation: بعد از لاگین/تغییر سطح دسترسی، session_regenerate_id(true) رو فراموش نکن.
  • Rate limiting روی لاگین (Backoff نمایی) + امکان 2FA در نقشه راه.

۲) بهبود تجربه‌ی توسعه (DX)

  • Composer و PSRها:

    • PSR-4 برای autoload و PSR-12 برای استایل کد را اعلام و رعایت کن (Badge هم بگذار). (php-fig.org)
    • CLI اختصاصی‌ات (saeedtnt) را به‌صورت binary در Composer ثبت کن تا بشه با نصب پروژه روی سیستم کاربر، مستقیم vendor/bin/saeedtnt اجراش کرد.
  • Routing و Middleware: نمونه‌هایی از Routeها (GET/POST، پارامترها، Middleware گروهی) در README قرار بده.
  • Error handling و صفحه‌ی خطای توسعه (trace زیبا) + لاگ PSR-3 (مثل Monolog).
  • Migrations: جدول tracking مایگریشن‌ها + تراکنش‌ها و امکان rollback (down).
  • DB Layer: PDO با prepared statement، Query Builder سبک یا ORM مینیمال.

۳) مستندسازی و مارکتینگ پروژه

  • README فعلی خوب شروع شده؛ برای جذب مخاطب بیشتر:

    • README فارسی (یا README.fa.md
    • GIF/اسکرین‌شات از اجرای CLI،
    • Badge‌ها (License/Build/Stars/PHP-versions/Coverage)،
    • Roadmap و لیبل‌های good first issue،
    • نمونه‌ی پروژه‌ی اسکلت (starter) که با یک دستور بالا بیاد.
  • بخش «شروع سریع» با سه فرمان اصلی (clone/نصب/serve) و «اولین Route/Controller» خیلی کمک می‌کنه.

نمونه‌ی کوتاه برای README.fa.md

# saeedtnt_framework (نسخه آزمایشی)

فریم‌ورک مینیمال PHP با CLI برای ساخت سریع Controller/Model/View/Migration و ابزارهای امنیتی (CSRF، مدیریت Session، فیلتر XSS) + Auth ساده.

## نصب سریع
```bash
git clone https://github.com/saeedtnt1234/saeedtnt_framework.git
cd saeedtnt_framework
cp .env.example .env  # تنظیم بر اساس دیتابیس خودتان
composer install
php -S localhost:8000 -t public

اولین Route

// core/routes.php
Route::get('/hello', [HelloController::class, 'index']);

ساخت کنترلر

php saeedtnt make:controller Hello

امنیت

  • CSRF روی تمام فرم‌های POST
  • کوکی سشن: HttpOnly + Secure + SameSite
  • هش پسورد: password_hash/password_verify

(در README اصلی‌ات هم به CLI، امنیت و پیش‌نیازها اشاره شده و ایده‌ی README فارسی می‌تونه در همون سبک تکمیل بشه.) :contentReference[oaicite:6]{index=6}

---

## ۴) نمونه‌ی `composer.json` پیشنهادی (خلاصه)
```json
{
  "name": "saeedtnt/saeedtnt-framework",
  "description": "Lightweight PHP microframework with CLI, Auth and migrations",
  "type": "library",
  "license": "MIT",
  "require": {
    "php": "^8.1",
    "ext-pdo": "*"
  },
  "require-dev": {
    "phpunit/phpunit": "^10.5",
    "phpstan/phpstan": "^1.11",
    "friendsofphp/php-cs-fixer": "^3.60"
  },
  "autoload": {
    "psr-4": {
      "SaeedTnt\\Framework\\": "core/"
    }
  },
  "bin": ["saeedtnt"]
}

۵) CI آماده (GitHub Actions)

فایل: .github/workflows/ci.yml

name: CI
on:
  push: { branches: ["main"] }
  pull_request: { branches: ["main"] }

jobs:
  tests:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        php: ["8.1", "8.2", "8.3"]
    steps:
      - uses: actions/checkout@v4
      - uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}
          coverage: none
          extensions: pdo_mysql
      - run: composer install --prefer-dist --no-progress
      - run: vendor/bin/phpunit --colors=always
      - run: vendor/bin/phpstan analyse --no-progress
      - run: vendor/bin/php-cs-fixer fix --dry-run --diff

۶) سیاست امنیتی و انتشار

  • SECURITY.md: ایمیل اختصاصی برای گزارش باگ‌های امنیتی + بازه‌ی پاسخگویی.
  • CHANGELOG.md + نسخه‌گذاری SemVer + Releases (در حال حاضر هیچ ریلیزی ثبت نشده). (GitHub)

الگوی کوتاه برای SECURITY.md

# Security Policy
- Supported: latest minor of 0.x (dev)
- Report vulnerabilities to: security@yourdomain.tld
- Please avoid public issues for security; use email above.

۷) ریزه‌کاری‌های کاربردی

  • موضوعات (Topics) گیت‌هاب: php-framework, microframework, mvc, cli, migration, auth, security, csrf, xss, router …
  • پلتفرم نصب: اگر قصد داری از طریق Composer قابل نصب باشه، پکیج رو در Packagist منتشر کن.
  • نمونه خروجی CLI در README (عکس/GIF) باعث افزایش اعتماد و استار می‌شه.
  • مستندات چندزبانه: EN و FA کنار هم.

اگر دوست داشته باشی، می‌تونم یک Pull Request آماده شامل:

  • اضافه کردن .env.example و .gitignore,
  • README.fa.md,
  • ci.yml,
  • و یک نمونه‌ی Route/Controller
    برات آماده کنم تا مستقیم Merge کنی.

باز هم تبریک بابت شروع خیلی خوبت 🌟 و ممنون که پروژه‌ات رو به اشتراک گذاشتی.
(ارجاع: ویژگی‌ها و وضعیت فعلی ریپو/README، تعداد استار، پیش‌نیازها، ساختار پوشه‌ها از صفحه‌ی گیت‌هاب شما استخراج شده است؛ PHP 7.4 EOL از مستندات رسمی PHP؛ هش پسورد از راهنمای password_hash؛ و PSR-12 از PHP-FIG.) (GitHub, PHP, php-fig.org)


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام