سلام.
من این لینک رو خوندم دستش درد نکنه neopersia ولی میخواستم بدونم امنیت سشن بهتره یا کوکی؟ ممنون.
کد:http://forum.p30world.com/showthread.php?t=322368
Printable View
سلام.
من این لینک رو خوندم دستش درد نکنه neopersia ولی میخواستم بدونم امنیت سشن بهتره یا کوکی؟ ممنون.
کد:http://forum.p30world.com/showthread.php?t=322368
شما مطمئن هستید که اون تاپیک رو کامل مطالعه کردید؟
نقل قول:
کوکی ها تا زمانی که باطل نشده باشن زنده میمونن که طول عمرشون رو هم همون موقع که ست میشن میشه تعیین کرد. برای ذخیره تنظیماتی که حیاتی نیستن و باید طی مدت طولانی (بیشتر از یک جلسه) تو مرورگر باقی بمونن میشه از کوکی استفاده کرد
نقل قول:
بله و خیر! خیلی جاها میتونن ولی خیلی جاها نباید جانشین هم بشن! اینا ابزارهایی هستن که دست برنامه نویسه که تصمیم بگیره از هر کدوم چه استفاده ای بکنه. در کل ذخیره اطلاعات خصوصی در کوکی ها مشکل امنیتی داره. از طرفی با توجه به اینکه سشنها در هر بازدید ریست میشن و در بازدید بعدی باید از اول پر بشن و احیانا تنظیمات رو دوباره از دیتابیس بخونن اما طول عمر کوکی ها رو میشه بدون کوچکترین تأثیری روی سرور به مقدار دلخواه تنظیم کرد باعث میشه که کوکی ها محل خوبی برای ذخیره یک تنظیمات معمولی و درازمدت کاربر باشن
سلام. من اگر بخوام از کوکی ها استفاده کنم در سیستمم، اونوقت کاربر ها میتونن همین طوری از خودشون یه کوکی با اسم مثلا administrator درست کنن و به بخش های مدیریت سایت برن؟
ممنون میشم کمک کنین.
بستگی به این داره که شما چطور و برای چه کاری از کوکیها استفاده کنید.
اگر بخواید سیستم کاربری کامل مبتنی بر کوکی بنویسید، در کل میشه گفت بله... شما هر چه قدر هم که اطلاعات رو در کوکی بپیچونید و مثلن بخواید کار هکر رو سخت کنید، باز هم نمی تونید جلوی نفوذ هکرها رو بگیرید.
ولی همونطور که در تاپیک دیگه شما هم اشاره شد نباید اطلاعات حساس رو در کوکی ذخیره کرد. اطلاعات مهم رو می تونید در session ذخیره کنید.
البته راههایی هم برای دزدی/سوء استفاده از Session ها هم هست که چند سال پیش در راین رابطه یک بحث ایجاد شد در همین انجمن که می تونید جستجو کنید.
ممنون.
مثلا برای دکمه ی "مرا به خاطر بسپار" یا صفحه ای که لاگین می کنن کاربر ها درسته از کوکی استفاده کنم؟
برای خودم (Admin) چی؟
یا مثلا هر صفحه ای که از کاربر بخواد لاگین کنه و چک کنه که $_cookie['username'] ست شده یا نه، اونوقت دوباره یه دور چک کنه که نام کاربری و رمز معتبر هست یا نه امن میشه؟
---------- Post added at 07:37 PM ---------- Previous post was at 07:36 PM ----------
تو عجب دنیایی زندگی می کنیم باید خدا خدا کنیم که هکر ها با انصاف باشن :دی
به نطر من باید برای admin از Sessions و برای کاربران سایت از کوکی با پسورد هش شده استفاده کنید.نقل قول:
ممنون.
هش شده یعنی چی؟
یعنی در هر صفحه ببینه درسته یوزر نیم و پسورد؟ طول نمی کشه لود صفحه این طوری؟
من داشتم یه مطلب رو در مورد کوکی ها میخوندم به این برخوردم:
[PHP]session_set_cookie_params('o, /forums', 'www.example.com', isset($_SERVER["HTTPS"]), true)[/PHP]
این مدلیش رو دیگه نشنیده بودم.
این چیکار می کنه؟
لینک مطلب:
کد:http://thinkvitamin.com/code/how-to-create-totally-secure-cookies/
یعنی پسوردت رو با توابعی مثل crypt و احیانا یه دونه salt کد کنی. و اون رو توی یک کوکی قرار بدی. اگه غیر از این باشه که یوزر و پسوردت چک بشه خوب هر گاگولی میتونه با یک ست کوکی تقلبی به هدفش برسه.نقل قول:
من که چیزی سر در نیوردم.
میشه یه مثال کدی بزنین؟
---------- Post added at 08:11 PM ---------- Previous post was at 08:08 PM ----------
ببینید این خوبه؟
[PHP]
<?
$time = time();
$username = $_POST['username'];
setcookie('userlog', $username, $time + 1200, '/', '.localhost', 1, 1);
?>
[/PHP]
کسی نیست جواب بده؟
ممنون میشم راهنمایی کنید.
نه عزیزم ببین مثل این، ببین میفهمی چی میشه؟! برو در مورد توابع md5 و crypt سرچ کن توی نت.نقل قول:
[PHP]$username=$_POST['user1'];
$password=crypt($_POST['pass'],"Salt");
include '../config.php';
$sql= "SELECT * FROM `users` WHERE `user`='$username' AND `pass`='$password'";
$result=mysql_query($sql);
$rows=mysql_num_rows($result);
if($rows==0)
{
header("Location: invalid.php");
}
else
{
setcookie("user","$username");
setcookie("pass","$password");
header("Location: detect.php");
}
mysql_close($link);
?>[/PHP]
و اگه نخوای پسورد رو بذاری توی کوکی، میتونی بعد از چک کردن user و پسورد یک راندوم بزرگ تولید کنی و اون رو هم توی کوکی و هم توی دیتابیس برای اهراز هویت کاربران سایت نگهداری کنی. پیروز باشی.
ممنون. دستتون درد نکنه.
من این لینک رو درباره ی Crypt() خوندم ولی هیچی نفهمیدم :دی
اگه میشه یکم راهنمایی کنین دربارش.
ببخشید من خیلی مبتدی هستم وقتتون رو می گیرم.کد:http://www.w3schools.com/php/func_string_crypt.asp
شما یک پسورد داری و میخوای کدش کنی. میتونی از توابه مختلفی استفاده کنی که هر کدوم امنیت خاص خودشون رو دارن. مثلا crypt. وقتی یک رشته مثلا همون پسورد رو به صورت تنها بخورد این تابع بدی به این صورت crypt($password) این تابع پس از هر بار اجرا یک کد متفاوت تولید میکنه. یعنی مثلا دو بار اجرا میشه و دوتا کد متفاوت تولید میکنه. و این مشکل سازه چون شما میخوای این پسورد کد شده رو با یک کد دیگه که توی دیتابیس هست مقایسه بکنی. برای حل این مشکل شما دوست عزیز باید یک نمک یا همون salt اضافه کنی تا هم امنیت رو افزایش بدی و هم کدای تولیدیه یکسانی بدست بیاری. نمک هر چیزی میتونه باشه. به مثال زی توجه کننقل قول:
[PHP]$password=crypt($_POST['pass'],"beautiful");[/PHP]
الان من پسورد پست شده از فرم قبلی رو با نمک beautiful قاطی کردم. شما همواره کد یکسانی با این تابع بدست خواهی آورد. وقتی یک نفر میخواد توی سایت ثبت نام کنه شما کد بدست اومده رو توی دیتابیس ذخیره میکنی نه خود اصل پسورد رو. بعد وقتی طرف میاد لاگین بشه باز پسوردش رو کد میکنی و با پسوردی که توی دیتابیس هست مقایسه میکنی و اگه یکی بود اجازه ورود دارد.
این نکته رو هم من اضافه کنم که بهتره سالت رندوم باشه. طولش هم متغیر باشه. و در هر دفعه استفاده هم عوض بشه
در غیر این صورت هکر رو کند میکنه اما نه به اندازه ای که نتونه کارش رو انجام بده
ممنونم از شما دوستان.
اونوقت هر دفعه عوض بشه یعنی اینکه به دیتابیس وصل بشه و هر دفعه اون رمز رو عوض کنه؟
اونوقت هر صفحه ای که بخواد از کوکی استفاده کنه که اگر رندوم باشه دیگه با دفعه ی قبلی جور نمیشه.
میشه راهنماییم کنید؟ یکم گیج شدم.
دیگه یوزر نیم رو که نمیخواد Crypt کنم نه؟
اونوقت اگر برای خودم که مدیر سایتم هستم :دی بخوام سشن درست کنم دیگه نمیخواد کاریش کنم؟ فقط یه سشن ساده کافیه امنیتش؟
منظورم برای استفاده در کنترل پنل مدیریت هست.
باید سالتی رو که موقع هش کردن استفاده میشه به همراه پسورد ذخیره کنید و بعداً برای چک کردن داده های ورودی کاربر از همون سالت قبلی استفاده کنیدنقل قول:
اونوقت هر دفعه عوض بشه یعنی اینکه به دیتابیس وصل بشه و هر دفعه اون رمز رو عوض کنه؟
اونوقت هر صفحه ای که بخواد از کوکی استفاده کنه که اگر رندوم باشه دیگه با دفعه ی قبلی جور نمیشه.
لزوماً احتیاجی نیستنقل قول:
دیگه یوزر نیم رو که نمیخواد Crypt کنم نه؟
چه فرقی میکنه؟ پسوردها همیشه باید هش بشه. کوکی هم هر وقت پسورد داخلش هست باید هش شده باشهنقل قول:
اونوقت اگر برای خودم که مدیر سایتم هستم بخوام سشن درست کنم دیگه نمیخواد کاریش کنم؟ فقط یه سشن ساده کافیه امنیتش؟
ممنون. اونوقت وقتی Crypt کنم اصلا بازم نیاز هست که کوکی admin رو به سشن تبدیل کنم امنیتش بره بالا تر؟
من در مورد md5 هم تحقیق کردم. خودش پسورد رو به رندوم هش می کنه. اونوقت امنیت کدوم بهتره فرق می کنه اصلا؟
آهان فهمیدم خودم این یکی MD5 هر دفعه تغییر نمی کنه.
ممنون.
من یه مشکل دارم با Crypt کردن. دیگه نمیخواد پسورد های هش نشده رو در دیتابیس سیو کنم نه؟ فقط پسورد ها رو به صورت هش شده سیو کنم کافیه؟ مشکلم اینجاست که اونوقت در داخل قسمت salt ِ فانکشن Crypt چی بذارم؟ یه عدد رندوم؟ اونوقت که هر دفعه پسورد یه چیز در میاد و با پسورد داخل دیتابیس تتابق نداره!
من حسابی گیج شدم. میشه کمک کنید؟
نه نیازی به ذخیره پسورد بدون هش نیست
اگر پسورد هش شده هر دفعه تغییر میکرد که دیگه قابل استفاده نبود! نتیجه تابع Crypt هم ثابت هست و تغییر نمیکنه. اینکه الان برای شما تغییر میکنه دلیلش این هست که سالت بهش نمیدید و اونم خودش از یه سالت رندوم استفاده میکنه برای همین نتیجه هر دفعه فرق میکنه
از طرفی کمتر پیش میاد که برای هش کردن از تابع crypt استفاده بشه. معمولاً از توابع md5 و sha1 استفاده میشه. در برخی مواقع هم که لازم باشه هش با الگوریتمهای دیگه انجام بشه از تابع hash استفاده میشه
ممنون. تابع sha224 و اینا رو چه شکلی میشه استفاده کرد؟ چون به صورت فانکشن وجود ندارن. :(
همونطور که گفتم با استفاده از تابع hashنقل قول:
ممنون. فکر کنم از دست من اون پروفایل پیکچر رو گذاشتین نه؟ :دی امنیت کدوم بالا تره؟ ممنون.