PDA

View Full Version : فريم ورك ايراني اورانيوم



MRmoon
پنج شنبه 09 آبان 1392, 07:54 صبح
با سلام.

بنده يك فريم ورك نوشتم به نام 'اورانيوم' .

از دوستان مي خوام نگاهي بكنند و تستش كنند.

دارم user guide رو هم آماده مي كنم.

اميدوارم شما هم در توسعه ي اين فريم ايراني كمك كنيد.

آدرس وبلاگ:

http://phpuf.blog.ir/

لينك پروژه در Github:
https://github.com/phpuf/framework (https://github.com/phpuf/framework/)

مهرداد سیف زاده
پنج شنبه 09 آبان 1392, 13:52 عصر
خیلی خوب نوشتید
معلومه با چند تا فریم ورک کار کردید و از بیشتر اونها در فریم ورک خودتون الگو گرفتید.
مخصوصا ساختارش خیلی شبیه codeigniter بود. که خوبی این ساختار عدم پیچیدگی و امکان توسعه اون هست.

و امام برای همکاری چند سوال:
برای حملات اینترنتی مثل xss و csrf هم توابع مربوطه رو نوشتید؟
برای کار با session تمام کارها انجام شده؟ مثل flash_data و save session to database؟
امکان داده برای کار با دیتابیس doctrine رو به پروژه اضافه کرد؟

و در آخر به نظرم در مقابل دوستان دیگه که فریم ورک نوشته بودن برای شما خیلی ساختار بهتری داشت. بفرمایید چه قسمتهایی نیاز به همکاری داره.
همچنین github مکان بهتری برای گذاشتن چنین پروژه هایی و امکان همکاری گروهی هست.

abolfazl-z
پنج شنبه 09 آبان 1392, 14:06 عصر
آفرین ِِِِِِِِِِِِ

MRmoon
پنج شنبه 09 آبان 1392, 14:15 عصر
خیلی خوب نوشتید
معلومه با چند تا فریم ورک کار کردید و از بیشتر اونها در فریم ورک خودتون الگو گرفتید.
مخصوصا ساختارش خیلی شبیه codeigniter بود. که خوبی این ساختار عدم پیچیدگی و امکان توسعه اون هست.

و امام برای همکاری چند سوال:
برای حملات اینترنتی مثل xss و csrf هم توابع مربوطه رو نوشتید؟
برای کار با session تمام کارها انجام شده؟ مثل flash_data و save session to database؟
امکان داده برای کار با دیتابیس doctrine رو به پروژه اضافه کرد؟

و در آخر به نظرم در مقابل دوستان دیگه که فریم ورک نوشته بودن برای شما خیلی ساختار بهتری داشت. بفرمایید چه قسمتهایی نیاز به همکاری داره.
همچنین github مکان بهتری برای گذاشتن چنین پروژه هایی و امکان همکاری گروهی هست.

بله من zend , yii , codeigniter رو بررسي كردم.

اين نسخه 0.01 بود و چيز هايي كه گفتين رو نداره.

doctrine ميشه بفرماييد چي هست؟ اطلاع زيادي در مورد اين ندارم.

MRmoon
پنج شنبه 09 آبان 1392, 14:45 عصر
و در آخر به نظرم در مقابل دوستان دیگه که فریم ورک نوشته بودن برای شما خیلی ساختار بهتری داشت. بفرمایید چه قسمتهایی نیاز به همکاری داره.

خوب كلاس هاي زياد ديگه يا ميشه نوشت مثل همونايي كه اشاره كرديد.

يا كلاس هاي نوشته شده رو اصلاح كرد يا بهشون بخش هايي اضافه كرد.

FastCode
پنج شنبه 09 آبان 1392, 14:53 عصر
اولین فایلی که باز کردم.
hash.php
چیزی رو که شما اسمش رو salt گزاشتید salt نیست.اسمش pepper ه.
فعلا همین یکی چون دارم فیلم میبینم:).

اگر میخواهی چند تا از فایلهایی که دوست داری تغییر کنه رو بهم بگو تا بهت بگم چکار کنی.

MRmoon
پنج شنبه 09 آبان 1392, 15:20 عصر
اولین فایلی که باز کردم.
hash.php
چیزی رو که شما اسمش رو salt گزاشتید salt نیست.اسمش pepper ه.
فعلا همین یکی چون دارم فیلم میبینم:).

اگر میخواهی چند تا تا از فایلهایی که دوست داری تغییر کنه رو بهم بگو تا بهت بگم چکار کنی.

ميشه منظورتون رو بگيد؟؟؟ pepper?

-------------

ممنون از اين كه فريم ورك رو بررسي مي كنيد.

A_2006
پنج شنبه 09 آبان 1392, 15:33 عصر
ميشه منظورتون رو بگيد؟؟؟ pepper?

-------------

ممنون از اين كه فريم ورك رو بررسي مي كنيد.

ایشون این روزها چرت و پرت زیاد میگن . شما به بزرگواری خودتون ببخشید . تقصیر از ماست که این کاربرها رو اینطور پرورش دادیم. راستی کارتون خیلی خوبه.

مهرداد سیف زاده
پنج شنبه 09 آبان 1392, 16:15 عصر
جدای از کار با دیتابیس به روش سنتی، امروزه بیشتر از ORM‌استفاده میکنن. مثلا در فریم ورک net. ابزاری مثل linq یا entity framework در اختیار برنامه نویس هست تا با دیتابیس براحتی کار کنه. البته فقط راحتی نیست بحث سرعت و کنترل کار با دیتابیس توسط برنامه جانبی هم دخیله. و برنامه نویس رو چندان با لایه‌های بسیار پایین مثل validation‌کردن اطلاعات ورودی برای درج در دیتابیس درگیر نمیکنه.
فریم ورک symfony از doctrine (http://www.doctrine-project.org/) برای کار با دیتابیس استفاده میکنه. و وقتی شما command tool فریم ورک symfony قصد دارید یک مدل یا یک crud رو به پروژه اضافه کنید بصورت خودکار تمام ماژول ها و فراخوانی‌های doctrine رو انجام میده. فریم ورک cake php دارای ORM داخلی خودش هست و codeigniter هم ORM نداره. البته یکی از اشکلاتی که بر codeigniter هست فشار به دیتابیس در پرژوه‌های متوسط و نسبتا بزرگ و دوستان باید توجه داشته باشند codeigniter رو برای پروژه‌های بزرگ استفاده نکنن.


دوستمون زحمت زیادی برای این فریم ورک کشیدند. و بسیار جالب هم هست که تمام کلاسهای اولیه موردنیاز رو بهش اضافه کردن
نظرم اینه با همدیگه یک گروه بشیم و این فریم ورک رو توسعه بدیم

مهرداد سیف زاده
پنج شنبه 09 آبان 1392, 16:20 عصر
اولین فایلی که باز کردم.
hash.php
چیزی رو که شما اسمش رو salt گزاشتید salt نیست.اسمش pepper ه.
فعلا همین یکی چون دارم فیلم میبینم:).

اگر میخواهی چند تا تا از فایلهایی که دوست داری تغییر کنه رو بهم بگو تا بهت بگم چکار کنی.

آخه چرا وسط فیلم میاید کارهای تخصصی انجام میدید.:قهقهه::قهقهه:

MRmoon
پنج شنبه 09 آبان 1392, 16:44 عصر
دوستمون زحمت زیادی برای این فریم ورک کشیدند. و بسیار جالب هم هست که تمام کلاسهای اولیه موردنیاز رو بهش اضافه کردن
نظرم اینه با همدیگه یک گروه بشیم و این فریم ورک رو توسعه بدیم

اين حرفتون به من اميد زيادي داد.

خيلي ممنون.

FastCode
پنج شنبه 09 آبان 1392, 17:00 عصر
ایشون این روزها چرت و پرت زیاد میگن . شما به بزرگواری خودتون ببخشید . تقصیر از ماست که این کاربرها رو اینطور پرورش دادیم. راستی کارتون خیلی خوبه.
شما یکی از کاربرانی هستی که من بلاک کردم.
فکر کردم بعد از یه مدت تغییر کردی و شاید پستت ارزش خوندن داشته باشه.

آخه چرا وسط فیلم میاید کارهای تخصصی انجام میدید.:قهقهه::قهقهه:دانلودش نصفه بود.باید چند دقیقه وقت می گذشت که بقیش رو بدون قطعی ببینم.

و اما جواب OP:

ميشه منظورتون رو بگيد؟؟؟ pepper?pepper در واقع شبیه salt عمل میکنه ولی یک مقدار روش کار و خاصیت و علت استفادش فرق داره.
salt برای هر instance ه اطلاعات استفاده میشه که باعث میشه باز کردن رمز هر instance نیاز به از سرگرفتن همه ی مراحل رمزگشایی داشته باشه و کار رو به تعداد instance ها سخت تر میکنه.
pepper به ازای هر application استفاده میشه.یعنی هر برنامه ای که به مثلا دیتابیس دسترسی داره اطلاعات فقط مربوط به خودش رو به علاوه سالت با کلید دیگه با اسم pepper هم درهم سازی میکنه که با لو رفتن salt یا نفوذ به برنامه های دیگه که به اطلاعات دسترسی دارند نفوذگرها هنوز یک مرحله عقب باشند.
pepper معمولا همونطوری که شما استفاده کردید به شکل ثابت در کد تعریف میشه.در صورتی که salt معمولا در دیتابیس ها کنار سطرهای مختلف اطلاعات که درشون درهمسازی صورت میگیره مثل پسورد ها نگهداری میشن.

Veteran
پنج شنبه 09 آبان 1392, 17:07 عصر
pepper در واقع شبیه salt عمل میکنه ولی یک مقدار روش کار و خاصیت و علت استفادش فرق داره.
salt برای هر instance ه اطلاعات استفاده میشه که باعث میشه باز کردن رمز هر instance نیاز به از سرگرفتن همه ی مراحل رمزگشایی داشته باشه و کار رو به تعداد instance ها سخت تر میکنه.
pepper به ازای هر application استفاده میشه.یعنی هر برنامه ای که به مثلا دیتابیس دسترسی داره اطلاعات فقط مربوط به خودش رو به علاوه سالت با کلید دیگه با اسم pepper هم درهم سازی میکنه که با لو رفتن salt یا نفوذ به برنامه های دیگه که به اطلاعات دسترسی دارند نفوذگرها هنوز یک مرحله عقب باشند.
pepper معمولا همونطوری که شما استفاده کردید به شکل ثابت در کد تعریف میشه.در صورتی که salt معمولا در دیتابیس ها کنار سطرهای مختلف اطلاعات که درشون درهمسازی صورت میگیره مثل پسورد ها نگهداری میشن.
ی پیشنهاد دارم !
تا متخصص امنیت eshpilen نیومده فرار کن برو/

مهرداد سیف زاده
پنج شنبه 09 آبان 1392, 17:09 عصر
شما یکی از کاربرانی هستی که من بلاک کردم.
فکر کردم بعد از یه مدت تغییر کردی و شاید پستت ارزش خوندن داشته باشه.
دانلودش نصفه بود.باید چند دقیقه وقت می گذشت که بقیش رو بدون قطعی ببینم.

و اما جواب OP:
pepper در واقع شبیه salt عمل میکنه ولی یک مقدار روش کار و خاصیت و علت استفادش فرق داره.
salt برای هر instance ه اطلاعات استفاده میشه که باعث میشه باز کردن رمز هر instance نیاز به از سرگرفتن همه ی مراحل رمزگشایی داشته باشه و کار رو به تعداد instance ها سخت تر میکنه.
pepper به ازای هر application استفاده میشه.یعنی هر برنامه ای که به مثلا دیتابیس دسترسی داره اطلاعات فقط مربوط به خودش رو به علاوه سالت با کلید دیگه با اسم pepper هم درهم سازی میکنه که با لو رفتن salt یا نفوذ به برنامه های دیگه که به اطلاعات دسترسی دارند نفوذگرها هنوز یک مرحله عقب باشند.
pepper معمولا همونطوری که شما استفاده کردید به شکل ثابت در کد تعریف میشه.در صورتی که salt معمولا در دیتابیس ها کنار سطرهای مختلف اطلاعات که درشون درهمسازی صورت میگیره مثل پسورد ها نگهداری میشن.

بحث جالبیه تا بحال بهش برنخورده بودم. امکان داره مراجع معتبر pepper رو برای مطالعه بفرمایید.

MRmoon
پنج شنبه 09 آبان 1392, 17:25 عصر
شما یکی از کاربرانی هستی که من بلاک کردم.
فکر کردم بعد از یه مدت تغییر کردی و شاید پستت ارزش خوندن داشته باشه.
دانلودش نصفه بود.باید چند دقیقه وقت می گذشت که بقیش رو بدون قطعی ببینم.

و اما جواب OP:
pepper در واقع شبیه salt عمل میکنه ولی یک مقدار روش کار و خاصیت و علت استفادش فرق داره.
salt برای هر instance ه اطلاعات استفاده میشه که باعث میشه باز کردن رمز هر instance نیاز به از سرگرفتن همه ی مراحل رمزگشایی داشته باشه و کار رو به تعداد instance ها سخت تر میکنه.
pepper به ازای هر application استفاده میشه.یعنی هر برنامه ای که به مثلا دیتابیس دسترسی داره اطلاعات فقط مربوط به خودش رو به علاوه سالت با کلید دیگه با اسم pepper هم درهم سازی میکنه که با لو رفتن salt یا نفوذ به برنامه های دیگه که به اطلاعات دسترسی دارند نفوذگرها هنوز یک مرحله عقب باشند.
pepper معمولا همونطوری که شما استفاده کردید به شکل ثابت در کد تعریف میشه.در صورتی که salt معمولا در دیتابیس ها کنار سطرهای مختلف اطلاعات که درشون درهمسازی صورت میگیره مثل پسورد ها نگهداری میشن.

خوب اين استفاده درستي از pepper و salt كنار هم هست؟


private static $algo = '$2a';
private static $cost = '$10';
private static $pepper = 'eMI8MHpEByw/M4c9o7sN3d';

public static function generateSalt($length) {
$randomBinaryString = mcrypt_create_iv($length, MCRYPT_DEV_URANDOM);
$randomEncodedString = str_replace('+', '.', base64_encode($randomBinaryString));
return substr($randomEncodedString, 0, $length);
}

public static function generateHash($password) {
if (!defined('CRYPT_BLOWFISH'))
die('The CRYPT_BLOWFISH algorithm is required (PHP 5.3).');
$password = hash_hmac('sha256', $password, self::$pepper, false);
return crypt($password, self::$algo . self::$cost . '$' . self::generateSalt(22));
}

public static function checkPassword($hash, $password) {
$salt = substr($hash, 0, 29);
$password = hash_hmac('sha256', $password, self::$pepper, false);
$new_hash = crypt($password, $salt);
return ($hash == $new_hash);
}

اينو ازhttp://stackoverflow.com/ كپي كردم

FastCode
پنج شنبه 09 آبان 1392, 17:39 عصر
http://security.stackexchange.com/questions/211/how-to-securely-hash-passwords/31846#31846
قسمت آخر, pepper

FastCode
پنج شنبه 09 آبان 1392, 17:46 عصر
خوب اين استفاده درستي از pepper و salt كنار هم هست؟


private static $algo = '$2a';
private static $cost = '$10';
private static $pepper = 'eMI8MHpEByw/M4c9o7sN3d';

public static function generateSalt($length) {
$randomBinaryString = mcrypt_create_iv($length, MCRYPT_DEV_URANDOM);
$randomEncodedString = str_replace('+', '.', base64_encode($randomBinaryString));
return substr($randomEncodedString, 0, $length);
}

public static function generateHash($password) {
if (!defined('CRYPT_BLOWFISH'))
die('The CRYPT_BLOWFISH algorithm is required (PHP 5.3).');
$password = hash_hmac('sha256', $password, self::$pepper, false);
return crypt($password, self::$algo . self::$cost . '$' . self::generateSalt(22));
}

public static function checkPassword($hash, $password) {
$salt = substr($hash, 0, 29);
$password = hash_hmac('sha256', $password, self::$pepper, false);
$new_hash = crypt($password, $salt);
return ($hash == $new_hash);
}

اينو ازhttp://stackoverflow.com/ كپي كردم
str_replace فقط enteropy رو کم میکنه و خاصیتی نداره.
من خیلی php بلد نیستم و شاید اشتباه منوجه شده باشم ولی فکر میکنم سالت شما بعد از ساختن از دسترس خارج میشه و نمیدونم سالتی که در تابع آخر استفاده کردید از کجا اومده.
در ضمن سالت همیشه باید بیرون کتابخونه ساخته بشه.
در ضمن کدتون در برابر timing attack هم مقاوم نیست.
خیلی موارد دیگه هم هست که اینجا باید رعایت بشه.

پیشنهاد میکنم روش کار MSCHAPv1 رو با اینکه تاریخ گذشتست مطالعه کنید.

FastCode
پنج شنبه 09 آبان 1392, 19:03 عصر
داشتم saving hope میدیدم.الان از نظر من همش حیاتیه.

hidensoft
پنج شنبه 09 آبان 1392, 20:49 عصر
چون بحث هک و اینا شد می گم.
اول آخر وقتی از md5 و sha* استفاده می کنید فرقی نمی کنه salt + pepper اصن شما یه کلید دیگه هم اضافه کن. درواقع شما چیزی رو امن تر نمی کنید. هکری که به دیتابیس دسترسی پیدا می کنه به کد هم دسترسی پیدا می کنه احتمالا. بعد باس بشینی خون گریه کنی. با بلوفیش می شه زمان انکریپت رو افزایش داد (از هش استفاده نکنید). اینطوری زمانی که گرفته می شه تا بتونه مثلا یک میلیون کلمه رو مقایسه کنه چندین برابر می شه و احتمالا به صرفه نخواهد بود کلا چه از لحاظ سیستمی چه از لحاظ زمانی :پی
در غیر این صورت اگر من کد رو هم نداشته باشم دیتابیس رو داشته باشم +‌ یک کتابخوانه خفن از کلمات (که اگر جستجو کنید معمولی هاش حدود ۵ گیگ هستند) حالا هر روشی کی می خواید پیاده کنید بلخره می شه پیداش کرد اگه یدونه از روش ها مچ بشه تمومه.

فقط یه نکته اونم اینکه شاید دانسته های من در مورد pepper و salt غلطه ! اما احساس می کنم شما برعکس گفتید. salt یکسان هست و pepper ساخته می شه!
تنها دلیل استفاده از pepper اینه رشته های در هم ریخته شده با ورودی یکسان خروجی یکسان نداشته باشند ! درواقع salt همه جا یکی هست اما pepper بایست ساخته بشه و بعد یا قبل از salt با ورودی ترکیب بشه.
دلیلی که گفتید در مورد اپلیکیشن های مختلف و لو رفتن salt برای من قابل قبول نبود اگر منبع یا دلایل دیگه ای هست بگید لطفا.

FastCode
پنج شنبه 09 آبان 1392, 21:05 عصر
فقط یه نکته اونم اینکه شاید دانسته های من در مورد pepper و salt غلطه ! اما احساس می کنم شما برعکس گفتید. salt یکسان هست و pepper ساخته می شه!نگران نباش.۱۰۰٪ غلطه.


اول آخر وقتی از md5 و sha* استفاده می کنید فرقی نمی کنه salt + pepper اصن شما یه کلید دیگه هم اضافه کن. درواقع شما چیزی رو امن تر نمی کنید.یه حسی بهم میگه جدی میگی.
خیلی هم فرق میکنه.
میدونی dictionary attack چیه؟
میدونی چقدر طول میکشه یه sha1 ساده با salt و pepper شکسته بشه؟با کامپیوتر شخصی من و شما چند صد هزار قرن
بدون salt و pepper؟فقط به اندازه ۴ تا ۶ تا seek کردن هارد دیسک.(یعنی کمتر از یک ثانیه)
میدونی یک دیتابیس چند میلیون تایی که سالت و پپر داره رو چطوری باز میکنن؟باز نمیکنن.
میدونی وقتی نداره چکار میکنن؟یه الگوریتم هست که توی دیتابیسها خیلی کاربرد داره.بهش میگن reverse merge join
میدونی چرا وقتی بعضی وبسایتها هک میشن میگن هر چی رمز تا حالا داشتید و دارید رو عوض کنید ولی بعضی ها میگن فقط رمز همین وبسایت رو عوض کنید؟

hidensoft
پنج شنبه 09 آبان 1392, 21:27 عصر
نگران نباش.۱۰۰٪ غلطه.
منبع بده خب نیاز نیست شاخ و شونه بکشی

بعله من دارم جدی می گم. قطعا تعریف شما از شکسته شدن اشتباهه. یا واقعا نمی دونی dictionary attack که خودت اشاره کردی چیه یا هنوز مشغول فیلم دیدنی!
الباقی میدونی هایی که گفتی هم صرفا بخاطر خود بزرگ بینی شماست و من جوابی بهت نمی دم.

بعد از مدت ها گفتم چه جالب چند نفر پیدا شدن تو برنامه نویس که می شه حرف زد باهاشون اما خب مثه اینکه اشتباه کردم.
اگر منبعی برای ثابت کردن حرفات در مورد pepper داری ارائه بده در غیر این صورت اطلاعات روی هوا به کابرای دیگه نده.
همینطور اگه منبعی بیاری که کلا استفاده از هر نوع تابع هش کننده رو برای پسورد توصیه کرده باشه بد نیست.

FastCode
پنج شنبه 09 آبان 1392, 21:53 عصر
چند وقت بود کسی اینطوری جوابم رو ندادم بود.باید بگم منصفانه بود.

من نمیتونم چیزهایی رو که توی چند سال خوندم یکی یکی از توی هیستوری مرورگروم در بیارم که منبع بدم.
فقط یک سوال, شما تا الان چند بار سیستم تشخیص هویت درست کردی؟و منظورم select * from users نیست.
من خیلی درست کردم, شاید ۱۵ تا.و فرق salt و pepper رو تشخیص میدم و واقعا تقصیر من نیست که تقریبا هیچ کس توی این سایت کوچکترین اطلاعی از واژه ای به اسم امنیت نداره.

hidensoft
پنج شنبه 09 آبان 1392, 22:47 عصر
منم ناراحت شدم که شما چیز هایی رو تو طول چند سال خوندی اما الان هیچ منبعی نیست که حرف های شمارو تایید کنه و این واقعا نامردیه.
اگه به پست اول من نگاه کنی من در کمال ادب و احترام حرفمو زدم اما شما صرفا می خوای بگی که همه اشتباه می کنند و من درست می گم ولی چیزی برای اثبات هم نداری و می خوای تجارب شخصی خودت رو ملاک قرار بدی که این حرفه ای نیست.
واسه خودت می گم وگرنه واسه من که فرقی نداره اما اینقدر بزرگ بینی و توهم من چقدر شاخ ام هیچ وقت بهت کمک نمی کنه. هرکسی که این چند تا پستی که من و شما نوشتیم برای هم رو بخونه می تونه بفهمه کی درست می گه و کی غلط ولی ترجیحا من بهت می گم که تو خوبی تو درست می گی بحث رو بیش از این به حاشیه نبریم.

FastCode
پنج شنبه 09 آبان 1392, 23:11 عصر
بفرمایید, این هم برای شما:
http://security.stackexchange.com/questions/3272/password-hashing-add-salt-pepper-or-is-salt-enough
پاسخ jesper

http://en.wikipedia.org/wiki/Salt_%28cryptography%29
http://w3schools.invisionzone.com/index.php?showtopic=43257

MRmoon
جمعه 10 آبان 1392, 07:28 صبح
str_replace فقط enteropy رو کم میکنه و خاصیتی نداره.
من خیلی php بلد نیستم و شاید اشتباه منوجه شده باشم ولی فکر میکنم سالت شما بعد از ساختن از دسترس خارج میشه و نمیدونم سالتی که در تابع آخر استفاده کردید از کجا اومده.
در ضمن سالت همیشه باید بیرون کتابخونه ساخته بشه.
در ضمن کدتون در برابر timing attack هم مقاوم نیست.
خیلی موارد دیگه هم هست که اینجا باید رعایت بشه.

پیشنهاد میکنم روش کار MSCHAPv1 رو با اینکه تاریخ گذشتست مطالعه کنید.

زيرش نوشتم از كجا برداشتم و خودم ننوشتم....

دقيق هم نگاش نكردم فقط اين پيداش منم فقط طرز كارش مد نظرم بود...

ديروز فريم ورك 30 تا دانلود داشته كس ديگه اي نظري نداره؟؟؟

documention هم اكثرش و نوشتم داره تموم ميشه.

MRmoon
شنبه 11 آبان 1392, 07:17 صبح
دوستان به وبلاگ فريم ورك به آدرس http://phpuf.blog.ir/ سر بزنيد و اخبار رو اونجا ببينيد.

eshpilen
شنبه 11 آبان 1392, 10:18 صبح
pepper در واقع شبیه salt عمل میکنه ولی یک مقدار روش کار و خاصیت و علت استفادش فرق داره.
salt برای هر instance ه اطلاعات استفاده میشه که باعث میشه باز کردن رمز هر instance نیاز به از سرگرفتن همه ی مراحل رمزگشایی داشته باشه و کار رو به تعداد instance ها سخت تر میکنه.
pepper به ازای هر application استفاده میشه.یعنی هر برنامه ای که به مثلا دیتابیس دسترسی داره اطلاعات فقط مربوط به خودش رو به علاوه سالت با کلید دیگه با اسم pepper هم درهم سازی میکنه که با لو رفتن salt یا نفوذ به برنامه های دیگه که به اطلاعات دسترسی دارند نفوذگرها هنوز یک مرحله عقب باشند.
pepper معمولا همونطوری که شما استفاده کردید به شکل ثابت در کد تعریف میشه.در صورتی که salt معمولا در دیتابیس ها کنار سطرهای مختلف اطلاعات که درشون درهمسازی صورت میگیره مثل پسورد ها نگهداری میشن.
اکیدا درست است :چشمک:
البته pepper نباید حتما در کد باشه.
یعنی منظورم اینه اگر جای امن تری سراغ دارید میتونید اونجا بذارید.
ولی مسلما توی دیتابیس مشترک با salt ها نمیذارن، چون هدف اینه که هکر نتونه براحتی هم salt و هم pepper رو بدست بیاره؛ پس نباید هردو یک جا باشن (یا طوری نباشه که روش نفوذ و بدست آوردن هردوتاشون مشترک باشه).

eshpilen
شنبه 11 آبان 1392, 10:29 صبح
هکری که به دیتابیس دسترسی پیدا می کنه به کد هم دسترسی پیدا می کنه احتمالا
خب احتمالا دیگه!
بعضی وقتها هم نمیتونه یا به این سادگی نمیتونه.
اونطور مواقع pepper چیز خیلی خوبی میشه! چون اطمینان 100% میده که کسی قادر به کرک هش ها نخواهد بود (البته دقیقتر و علمی تر بخوایم بگیم، به شرطی که کاملا رندوم و با تعداد حالتهای ممکن کافی باشه).
چون گذاشتنش سخت نیست و زیاد هزینه نداره، پس استفاده میکنیم.

eshpilen
شنبه 11 آبان 1392, 13:50 عصر
راستی تاحالا یه برنامه نسخهء 0.01 ندیده بودم :لبخند:
آدم فکر میکنه قاعدتا نسخهء 0.01 هنوز به مرحلهء قابل انتشار (یا اصلا نسخه گذاری!!) نرسیده :متفکر:

FastCode
شنبه 11 آبان 1392, 18:20 عصر
من زیاد دیدم.اولین نسخه لینوکس همین ورژن رو داشت.

MRmoon
شنبه 11 آبان 1392, 18:53 عصر
راستی تاحالا یه برنامه نسخهء 0.01 ندیده بودم :لبخند:
آدم فکر میکنه قاعدتا نسخهء 0.01 هنوز به مرحلهء قابل انتشار (یا اصلا نسخه گذاری!!) نرسیده :متفکر:

حالا شما نديدي بايد وجود نداشته باشه؟؟؟؟؟

همونطور كه دوستمون اشاره كردن نمونه ي مهمي كه ميشه بيان كرد نسخه گذاري linux هست.

Veteran
شنبه 11 آبان 1392, 19:04 عصر
سیستمی که نوشتین عالیه :تشویق:
کاش موقعه ایی که داشتین پیاده سازی میکردین یک تاپیک میزدین(اموزش طراحی و پیاده سازی یک فریمورک) دراونجا هم توضیح میدادین مرحله به مرحله تا ماهم با روند انجام کار،منطق و ... اشنا میشدیم

MRmoon
شنبه 11 آبان 1392, 20:31 عصر
سیستمی که نوشتین عالیه :تشویق:
کاش موقعه ایی که داشتین پیاده سازی میکردین یک تاپیک میزدین(اموزش طراحی و پیاده سازی یک فریمورک) دراونجا هم توضیح میدادین مرحله به مرحله تا ماهم با روند انجام کار،منطق و ... اشنا میشدیم

ممنون كه نظرتون رو دادين...

البته از نظر خودم هنوز تا عالي بشه جاي كار زياد داره...

joker
شنبه 11 آبان 1392, 20:44 عصر
همين كه جيگرشو داشتي بشيني بنويسي و به زبون خودموني ي چيزي توليد كني خودش هزارامتياز داره :تشویق:


البته یکی از اشکلاتی که بر codeigniter هست فشار به دیتابیس در پرژوه‌های متوسط و نسبتا بزرگ و دوستان باید توجه داشته باشند codeigniter رو برای پروژه‌های بزرگ استفاده نکنن.
نكته اي بود كه تازه فهميدم ، يعني اصلا بهش تاحالا توجه نكرده بوديم ، فردا برم دنبال قضيه اش ببينم بايد چه خاكي تو سرمون بكنيم ... ي سيستم بزرگ را داريم روي اين جيگر مياريم بالا نگران شدم. ممنون.

MRmoon
یک شنبه 12 آبان 1392, 16:33 عصر
يك سوال داشتم از دوستان:

بعد از mysql پر كاربرد ترين ديتابيس چيه؟

2undercover
یک شنبه 12 آبان 1392, 18:51 عصر
سیستم های مدیریت پایگاه داده (http://db-engines.com/en/)

MRmoon
دوشنبه 13 آبان 1392, 10:58 صبح
نسخه ي 0.02 فريم ورك:

انتشار نسخه ی 2 (http://phpuf.blog.ir/1392/08/13/%D8%A7%D9%86%D8%AA%D8%B4%D8%A7%D8%B1-%D9%86%D8%B3%D8%AE%D9%87-%DB%8C-2)

دانلود (https://sourceforge.net/projects/phpuf/files/uranium%20framework%20ver%200.02.zip/download)

MRmoon
چهارشنبه 15 آبان 1392, 15:50 عصر
با سلام دوباره...

بزودي نسخه ي 0.03 با امكانات جديد:



کیچ کردن اطلاعات برای همیشه
اضافه کردن داریور mssql برای دیتابیس
ولیداتور کد ملی
ولیداتور شماره همراه
ولیداتور شماره منزل
ولیداتور اعداد فارسی
ولیداتور اعداد و کلمات پارسی
ولیداتور کد پستی
ولیداتور کد ملی
فلش مسیج ها

و در آخر این نکته رو هم بگم شاید کلا ساختار کار با دیتابیس عوض شد.


به وبلاگ هم سر بزنيد.




ليستي از امكاناتي كه تا اينجا فريم ورك داره:




اکسترکت کرد فایل ها ی زیپ
ولیداتور ایمیل
لاگ
کار با فایل ها
مدیریت دایرکتوری ها
کیچ کرن داده ها
ساخت کپچا
محافظت در برابر حملات csrf
قابلیت استفاده از دیتابیس mysql
ولیداتور فیلد (سمت سرور)
هش کردن رشته و پسورد
ساخت کد های html
ساخت کد های jquery
ساخت سایت چند زبانه
صفحه بندی کردن(pagination)
مدیریت داده های ورودی
مدیریت کوکی ها
مدیریت سشن ها
ساخت سوال امنیتی

MRmoon
پنج شنبه 16 آبان 1392, 08:55 صبح
خوب دوستان...

كساني كه حاضرن براي توسعه ي پروژه همكاري كنند اينجا اعلام كنند.

در ضمن نسخه ي 0.03 تقريبا آمادست...

براي كلاس ديتابيس از يك كلاس آماده استفاده كردم.

تمام امكاناتي رو هم كه گفته بودم اضافه كردم.

redhat2
پنج شنبه 16 آبان 1392, 11:37 صبح
من که حاضرم .

MRmoon
پنج شنبه 16 آبان 1392, 12:33 عصر
خوب شما كلاس هاي موردي نيازي رو كه فريم ورك نداره رو بنويسيد.

ميتونيد ليست كلاس ها رو تو user guide فريم ورك بنويسيد.

ميتونيد همينجا قرار بديد تا به فريم ور اضافه كنم با نام خودتون... .

فقط هر كلاس براي library بايد impelent شده ي رابط كاربري Main باشه.

يك نگاه به لايبرري ها بندازيد خودتون ميفهميد.

MRmoon
سه شنبه 21 آبان 1392, 16:18 عصر
دوستان از اون روزي كه پست قبلي رو زدم روي ORM كار مي كردم.

كلا ساختار ديتابيس عوض شده (كار با ديتابيس) و از PDO استفاده كردم.

مثلا به اين مثال توجه كنيد:


$result = UDatabase :: table( 'posts' ) -> where( 'title' , 'LIKE' , '%hello%' ) -> limit( 10 ) -> offset( 5 ) -> getAll();

يا براي اينسرت:

$result = UDatabase :: table( 'posts' ) -> insert( array( 'title' => 'Test!' , 'author' => 'Mohammad' , 'content' => 'Very nice!' ) );

يا مثلا در مدل:


$users = Users :: model( );
$users -> name = 'MOhammad';
$users -> family = 'Gholamian';
$users -> save();

redhat2
سه شنبه 21 آبان 1392, 16:39 عصر
به نظرم از Active record هم استفاده کنین ، خوبه ( البته فکر کنم استفاده می کنین ، ) ، همچنین روابط relationship ها را هم داره .

redhat2
سه شنبه 21 آبان 1392, 16:51 عصر
راستی یه نگاهی هم به اینجا بندازی بد نیست ، بهترین orm هست که تا حالا دیدم .
http://www.redbeanphp.com/

MRmoon
سه شنبه 21 آبان 1392, 17:56 عصر
ممنون از لينك.

خودم تمام اين متد ها رو تعبيه كردم. تقريبا كامله.

MRmoon
جمعه 01 آذر 1392, 09:37 صبح
دوستان من فريم ورك تقريبا كامله و روتر هم بهش اضافه كردم.

متاسفانه چند روز دسترسي به اينترنت نداشتم.

active record هم تقريبا تمومه.

يه داكيومنت جديد هم دارم مينويسم كه از قبليه بهتره (چه از لحاظ ظاهري چه ساختاري چه توضيح دادن).

بزودي نسخه ي بعدي رو انتشار ميدم.

MRmoon
جمعه 08 آذر 1392, 10:21 صبح
خوب اينو اينجا مينويسم براي كساني كه به سايت فريم ورك سر نميزنن ، تا يه وقت فكر نكنن فريم ورك مرده :لبخند:



اضافه شدن روتر و قابليت روتينگ
namespace بندي كردن كلاس ها
عوض شدن معماري پوشه ها
قابيلت ذخيره كردن سشن ها در كوكي ها و در ديتابيس
اضافه شدن هلپر array
هلپر ها از نوع فانكشن به كلاس تغيير يافتند
تغيير نحوه ي كارايي كلاس وليداتور فيلد و قابليت وليديت كردن چيز هاي بيشر
قابليت ساخته شدن چند سوال توسط كلاس SecurityAsk
اضافه كردن exception مخصوص براي هر كلاس
حذف كلاس Loader(Ulaoder)
اضافه شدن كلاس لاگ
اضافه شدن كلاس encrypter
اضافه كردنم متد هاي جديد به كلاس هش

و حداقل نسخه ي مورد نياز php براي فريم ورك 5.4 ـه.

colors
جمعه 08 آذر 1392, 11:31 صبح
سلام

ذخیره سشن در کوکی رو میشه بیشتر توضیح بدی؟

MRmoon
جمعه 08 آذر 1392, 12:59 عصر
به جاي فايل در كوكي ذخيره ميشه.

colors
جمعه 08 آذر 1392, 13:48 عصر
به جاي فايل در كوكي ذخيره ميشه.
یعنی امکان پذیره؟

MRmoon
جمعه 08 آذر 1392, 14:35 عصر
یعنی امکان پذیره؟

منظوتون از امكان پذيره چي هست؟؟؟؟

colors
جمعه 08 آذر 1392, 22:43 عصر
منظوتون از امكان پذيره چي هست؟؟؟؟

یعنی بجز اینکه میشه سشن رو تو فایل و دیتابیس ذخیره کرد, میشه تو کوکی هم ذخیره کرد؟

MRmoon
شنبه 09 آذر 1392, 06:39 صبح
سشن رو هر جا بخواي ميتوني ذخيره كني.

مثلا كدايگنيتر سشن ها رو تو كوكي ذخيره مي كنه.

MRmoon
یک شنبه 10 آذر 1392, 15:41 عصر
خوب بگم که دیگه فریم ورک داره آماده میشه و از جدید ترین امکاناتی که نوشته شده:




ساخت feed با atom
ساخت feed با rss
خواندن feed های rss
خواندن feed های atom
event manager مدیریت رویداد ها

منتظر باشید.

zoghal
پنج شنبه 14 آذر 1392, 00:06 صبح
درود برشما
ایکاش پروژه تون رو در گیت هاپ قرار بدید تا بشه نگاهی بهش انداخت. دانلود روش انتشار مناسب یک فریم ورک نیست.

MRmoon
پنج شنبه 14 آذر 1392, 07:56 صبح
والله زياد با github كار نكردم.

MRmoon
شنبه 16 آذر 1392, 20:02 عصر
خب دوستان ميخوام فريم رو بفرستم رو github ..

البته فعلا كه اين git با ما شوخيش گرفته و ارور ميده :D

دوستان منتظر باشيد كه پروژه رو github ببينيد.

در ضمن امكان استفاده نكردن در حالت در حالت mvc نيز وجود دارد.

فريم ورك با نسخه ي 0.02 خيلي فرق كرده و كلي كتابخونه قوي تر شده.

MRmoon
شنبه 23 آذر 1392, 06:28 صبح
فریم ورک بر روی گیت هاب رفت!!!!

https://github.com/phpuf/uranium-framework
(https://github.com/phpuf/uranium-framework)
ابن هم از لینک گیت هاب برای دوستان ی گفتند بزارید بر روی گیت....

دانلود نسخه ها (http://phpuf.blog.ir/page/%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D9%86%D8%B3%D8%AE%D9%87-%D9%87%D8%A7)

برای دانلود آخرین نسخه(0.33) هم میتونید از اینجا اقدام کنید. یا از وبلاگ به دانلود نسخه ها بروید.

pswin.pooya
شنبه 23 آذر 1392, 10:28 صبح
برای کار با session تمام کارها انجام شده؟ مثل flash_data و save session to database؟

چرا session باید توی دیتابیس ذخیره بشه؟

Veteran
شنبه 23 آذر 1392, 11:05 صبح
چرا session باید توی دیتابیس ذخیره بشه؟
توی هاست های اشتراکی چون پوشه tmp در درسترس همگان هست،بهتره که توی دیتابیس ذخیره کنیم سشن رو تا کسی نتونه سشن رو به عبارتی بدزده

elias molaie
شنبه 23 آذر 1392, 19:17 عصر
سلام
من هم حاضرم در ضمن بنظر من خیلی عالیه اخه هیج کس نمیدونه در اینده چی پیش میاد یا چی میشه ولی در کل فوائد خیلی زیادی داره اولیش هم اینه که میشه کدهاشو راحت تر درک کرد اخه نویسندش همین جاست ...:تشویق:

MRmoon
شنبه 23 آذر 1392, 19:41 عصر
دوستانی که میخواهند کمک کنند:::

بخش هایی که فعلا میخوایم:

1 - ولیداتور برای بخش مدل میتونید از کلاس fieldValidator خود فریم ورک استفاده کنید.
2 - خواندن فید های atom
3 - ذخیره ی سشن ها در دیتابیس
4 - نوشتن دیگر driver ها برای کیچ مثل درایور memcache , wincache , XCache , ...
5 - نوشتن Authentication کاربر


خوب دوستان برای اینکه بقیه دیتابیس ها رو هم بتونیم استفاده کنیم چه الگویی پیشنهاد می کنید؟

چون فکر می کنم الان syntaxش فقط با mysql و sqlite (شاید) جور در بیاد.

MRmoon
شنبه 23 آذر 1392, 19:42 عصر
در ضمن دوستانی که وبلاگ یا سایتی دارند خوشحال میشم فریم ورک رو معرفی کنن تا افراد بیشتری آشنا بشن و طبیعتا افراد بیشتری میتونن برای توسعه کمک کنن.

MRmoon
چهارشنبه 18 دی 1392, 20:17 عصر
دوستان پروژه رو در bitbucket قرار دادم البته mercurial هستش.

https://bitbucket.org/Mohammad-Mahdy/phpuf

Veteran
چهارشنبه 18 دی 1392, 21:48 عصر
ی پروژه هم با این فریمورک انجام بده،ببینیم چجوریاس :لبخند:

danial.saeedi
دوشنبه 23 دی 1392, 16:44 عصر
سلام دوست عزیز من علاقه دارم در پیشرفت این فریم ورک کمک کنم....

danial.saeedi
دوشنبه 23 دی 1392, 16:48 عصر
MRmoon لطفا یک متن تبلیغاتی قرار دهید تا در وبلاگ یا سایتمان اونا کپی پیست کنیم:لبخندساده:

danial.saeedi
دوشنبه 23 دی 1392, 16:53 عصر
منظورتون از Authentication روتینگه؟اگه منظورتون همینه من اینو انجام می دم.

MRmoon
دوشنبه 23 دی 1392, 17:52 عصر
دوست عزيز ميتونيد براي كار با tortoisehgرو براي كار با hg نصب كنيد و ديگه همه چي معلومه.

منظور authentication برا كاربر هست البته خودم نوشتمش ولي شما هم ميتوني ارسال كني.

بعد ديگه خودتون معرف كنين ديگه من چي بگم بذارين :D ؟

abolfazl-z
دوشنبه 23 دی 1392, 20:45 عصر
http://nazuka.net/

یک هاست (رایگان) برا خودتون ردیف کنید (از جیمیل استفاده کنید).

amin7x
دوشنبه 23 دی 1392, 22:19 عصر
یکی میشه به من مبتدی این کار pepper و salt رو توضیح بده؟
راستی گت هاب ارور 404 میده.
ممنون

MRmoon
سه شنبه 24 دی 1392, 07:07 صبح
یکی میشه به من مبتدی این کار pepper و salt رو توضیح بده؟
راستی گت هاب ارور 404 میده.
ممنون

اگه چند تا پست قبل رو خونده باشيد:

دوستان پروژه رو در bitbucket قرار دادم البته mercurial هستش.

https://bitbucket.org/Mohammad-Mahdy/phpuf

redhat2
سه شنبه 24 دی 1392, 11:26 صبح
الان براش قابلیت relationship جداول را تعریف کردین ؟

MRmoon
سه شنبه 24 دی 1392, 11:35 صبح
الان براش قابلیت relationship جداول را تعریف کردین ؟

برا model??

آره فايل مربوطه رو نگاه كنيد.

danial.saeedi
سه شنبه 24 دی 1392, 14:57 عصر
سلام من دارم روش کار می کنم فقط یک سوال.
سوال:لازمه یک تابع برای رمزنگاری کوکی بزارم؟

danial.saeedi
سه شنبه 24 دی 1392, 16:24 عصر
سلام دوست عزیز! من uthentication اینو انجام دادم اگه کامل نبود به من بگید کاملش می کنم ممنون!



<?php
class user
{
function getIpUser()
{
return trim($_SERVER["REMOTE_ADDR"]);
}
function delete_session($session_name)
{
unset($session_name);
session_destroy();
}
function Email_validate($value)
{
if(preg_match("/[\w\-]+\@[\w\-]+\.[\w\-]+/",$value))
{
return(true);
}
else
{
return(false);
}
}
function name_validate($name)
{
if(preg_match("/^[a-zA-Z]/",$name))
{
return(true);
}
else
{
return(false);
}
}
function url_validate($url)
{
if(filter_var($url,FILTER_VALIDATE_URL))
{
return(true);
}
else
{
return(false);
}
}
}
?>



<?php
class Hash
{
function Crypt($string)
{
return(base64_encode($string));
}
function deCrpypt($string)
{
return(base64_decode($string));
}
function enCryptCookie($value)
{
if(!$value)
{
return(false);
}
return(base64_encode($value));
}
function deCryptCookie($value)
{
if(!$value){return(false);}
return(base64_decode($value));
}
}
?>

کامل تستش کردم

MRmoon
سه شنبه 24 دی 1392, 17:47 عصر
يك سوال.

اين چي هست دقيقا؟

danial.saeedi
سه شنبه 24 دی 1392, 20:32 عصر
تابع getIpUser ایپی یوزر رو می گیره delete_session سشن ها رو حذف می کنه و Email_validate ایمیل رو اعتبار سنجی می کنه و name_validate نام رو اعتبار سنجی می کنه و این url_validate ادرس وب سایت رو.
و تابع Crypt یک عبارت رو رمز می کنه و deCtrypt اونو رمز گشایی می کنه و enCryptCookie کوکی رو رمز می کنه و deCryptCookie اونو رمز گشایی می کنه.
در ضمن اگه با فریم ورک laravel کار کرده باشین Authentication بیشتر برای امنیت هست.(البته من اینجوری فهمیدم.)

danial.saeedi
سه شنبه 24 دی 1392, 20:58 عصر
البته اشتباه نوشتم user همون fieldValidator است.
در ضمن من پیشنهاد می کنم برای دیتابیس مثل PDO عمل کنیم.

danial.saeedi
سه شنبه 24 دی 1392, 21:12 عصر
سلام دوست عزیز من معرفی اورانیوم رو توی سایتم قرار دادم:
http://bein.ir/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D9%81%D8%B1%DB%8C%D9%85-%D9%88%D8%B1%DA%A9-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86%DB%8C-%D8%A7%D9%88%D8%B1%D8%A7%D9%86%DB%8C%D9%88%D9%85-php/

MRmoon
چهارشنبه 25 دی 1392, 07:29 صبح
تابع getIpUser ایپی یوزر رو می گیره delete_session سشن ها رو حذف می کنه و Email_validate ایمیل رو اعتبار سنجی می کنه و name_validate نام رو اعتبار سنجی می کنه و این url_validate ادرس وب سایت رو.
و تابع Crypt یک عبارت رو رمز می کنه و deCtrypt اونو رمز گشایی می کنه و enCryptCookie کوکی رو رمز می کنه و deCryptCookie اونو رمز گشایی می کنه.
در ضمن اگه با فریم ورک laravel کار کرده باشین Authentication بیشتر برای امنیت هست.(البته من اینجوری فهمیدم.)

البته فريم ورك خودش يك كلاس قدرتمند براي encrypting داره.

https://bitbucket.org/Mohammad-Mahdy/phpuf/src/7bd7066bec1c91ef5435810d1dcff4d1d5fb00d7/src/Uranium/Encryption/Encrypter.php?at=default

البته خوب داكيومنت نداره فريم ورك مشكل از اونه.

تابع getUserIp كه تو كلاس Request هست.
براي سيشن ها هم كه كلا كلاس داره!

danial.saeedi
چهارشنبه 25 دی 1392, 10:34 صبح
دیگه نمی دونم چه کلاسی بنویسم اخه هی چی می نویسم تکراریه

danial.saeedi
چهارشنبه 25 دی 1392, 10:37 صبح
کجا دایکیومنت بنویسم،ساختار فریم ورک توضیح بدید.

foreach
چهارشنبه 25 دی 1392, 11:13 صبح
میبخشید من دخالت میکنم اما یه کلاس برای لاگین کاربر بنویسید فکر کنم نیاز باشه

danial.saeedi
چهارشنبه 25 دی 1392, 22:04 عصر
فکر کنم نوشته شده باشه،ایا برای cashe چیزی نوشته شده اگه نوشته نشده من می نوستم.

MRmoon
یک شنبه 29 دی 1392, 17:01 عصر
خوب دوستان من اوبونتو نصب کردم رو کام‍بیوترم انتظار داشتم فریم ورک مثل ویندوز راحت بالا بیاد و کار کنه اما....

یکسری اشکالات داشت اول اینکه بعضی فایل تو map با حرف کوچیک بودن ولی فایل اصلی با حرف بزرگ بود (منظور شروعش هست) که چون لینوکس به بزرگ و کوچیک حساسه عمل نمی کرد::

بعد چند تا کلاس تو map نخورده بودن.

دیگه گیت هم درست شد و به زودی روی گیت ببینید. :D

------

برای کیچ خم که نوشتم ۳ تا آدابتر هم داره دیگه ..... یعنی ‍یدا کردنش انثد سخته ؟ :-s

MRmoon
جمعه 18 بهمن 1392, 13:17 عصر
دوستان شروع بع باز نویسی فریم ورک کردم....
در گیت هاب می تونید ببینید:

https://github.com/phpuf/framework/