سیستم کاربری امن

K@M@L

Well-Known Member
سلام

من یه سیستم کاربری ساختم که یوزر کاربر رو توی یه سیسن ذخیره میکنه!

سیسن ها رو برای امنیت بیشتر توی دیتابیس ذخیره میکنم!

برای اینکه کاربر همیشه در حالت لوگین باشه، هنگام لوگین شدن، نام کاربری رو به صورت md5 داخل یه فیلد در دیتابیس قرار میدم، همچنین این نام کاربری رو به صورت md5 داخل یه کوکی ذخیره میکنم!

و هنگام ورود به سایت اطلاعات این دوتا رو باهام بررسی میکنم، در صورتی که برابر باشن لوگین میشه!

اینم کدش:

PHP:
if (isset($_COOKIE['login']) && strlen($_COOKIE['login']) == 21){
    $Query = mysql_query ("SELECT * FROM om_users WHERE login='".sql_quote($_COOKIE['login'])."' LIMIT 0,1 ");
    $row = mysql_fetch_array($Query);
    if (isset($row['login'])) {
        login();
    } 
}

حالا میخوام ببینم آیا این روشی که من استفاده میکنم، امن هست؟

همچنین یه سوال: تعداد یوزرهای من حدود چند هزارتاست! لذا خواستم ببینم ذخیره سیسن ها که دارای اطلاعات کابرها هستن در دیتابیس برام مشکلی پیش نمیاره!؟ (هاستم اشتراکی نیست!)
 

Masoud1365

مدیر انجمن
نوع استفادت خوبه ! فقط بد جوری کوکی رو مستقیم توی کوئری استفاده کردید ! این بخش کدتون خوراک اینجکت هست ! ( یه فیلتری چیزی ! ) البته خب چون طول رشته رو برابر با 21 قرار دادی یکم کار سخت میشه ولی باز هم احتمالش زیاده !
چند هزار تا یوزر دارید یعنی حدود چند هزار تا ؟ مثلا 999 هزار تا یا 2 هزار تا !
در کل چون هاست اشتراکی نیست ( که احتمالا سرور اختصاصی هست ) مشکلی پیش نمیاد !
اطلاعات اضافه از روی دیتا یبس رو که پاک میکنید ؟
 

K@M@L

Well-Known Member
الان کوکی ها رو به این صورت چک میکنم، امین هست! اگر نیست، چطوری امین ترش کنم!

PHP:
if (isset($_COOKIE['om_password']) && strlen(preg_replace('/[^a-zA-Z0-9\-]/', '', $_COOKIE['om_password'])) == 32 && isset($_COOKIE['om_id']) && ctype_digit($_COOKIE['om_id']) ){
کاربرها هم حدود 12 هزارتا هستن!

منظورتون رو از اطلاعات اضافه متوجه نشدم، یعنی چی؟؟
 
آخرین ویرایش:

Domanjiri

Well-Known Member
الان کوکی ها رو به این صورت چک میکنم، امین هست! اگر نیست، چطوری امین ترش کنم!

کد PHP:
if (isset($_COOKIE['om_password']) && strlen(preg_replace('/[^a-zA-Z0-9\-]/', '', $_COOKIE['om_password'])) == 32 && isset($_COOKIE['om_id']) && ctype_digit($_COOKIE['om_id']) ){
کاربرها هم حدود 12 هزارتا هستن!

منظورتون رو از اطلاعات اضافه متوجه نشدم، یعنی چی؟؟

درود بر شما

اگه امنیت سایت خیلی مسئله حیاتییی(!) هست و ممکنه که مورد حمله قرار بگیرین، خب چرا از ارتباط امن SSL استفاده نمی کنید؟

به نظرم کوکی رو خوب چک کردید فقط اون عبارت نباید به این صورت باشه؟

PHP:
/^[a-zA-Z0-9]*$/

در ضمن برای Hash کردن می تونید از گزینه های دیگه ای به جز md5 استفاده کنید ( این به این معنی نیست که md5 لو رفته و اینا..) اما
مثل اینکه اگه بروبچه های هکر بخوان همت کنن(و البته هزینه) ، می تونن یه کارایی انجام بدن:green:

پیشنهاد می کنم که از bcrypt استفاده کنید( Portable PHP password hashing framework)

چنتا نکته که شاید واستون بدیهی باشه و من نمی دونم که شما اینارو رعایت کردین یا نه:

ممکنه یه کاربر روی دو تا سیستم چک باکس اتولاگین رو تیک زده باشه، اونوقت اگه همزمان...(متوجه شدین که؟)

تاریخ انقشا فراموش نشه!

و..

مورد یا الگوریتم خاصی الان یادم نمیاد، ولی اگه راه حل امن تری برای اتولاگین پیدا کردم، خبرتون می کنم.

راستی منظور آقا مسعود از اطلاعات اضافی اینه که مثلن من یه مدت چک باکس مربوط به اتولاگین رو انتخاب کرده بودم ولی از امروز دیگه نمی خوام خود به خود وارد سایت بشم، تکلیف اون یک سطری که برای من در دیتابیس ذخیره کردین چی میشه؟؟ باید حذفش بشه دیگه، نه؟ الان این میشه اطلاعات اضافی:)

شاد و پیروز باشید.
 

جدیدترین ارسال ها

بالا