PDA

View Full Version : پاک شدن اطلاعات موجود در دیتا بیس



zohreh.hn
سه شنبه 24 تیر 1393, 17:47 عصر
سلام به دوستان ممنون از راهنمایی های شما
یه اتفاق خیلی بد برای دیتا بیسم افتاده
بعضی از اطلاعات آن پاک شده است
برای امنیت ورود به قسمت آدمین از کد زیر استفاده کردم


if(!isUserLogedIn() || !isUserAdmin()) { header('location: loginAdmin.php'); }
چطور میشه که می تونند وارد آدمین بشن و اطلاعات را دستکاری کنن
لطفا راهنمایی بفرمایید:گریه::گریه::گریه:

under22
سه شنبه 24 تیر 1393, 17:56 عصر
سلام به دوستان ممنون از راهنمایی های شما
یه اتفاق خیلی بد برای دیتا بیسم افتاده
بعضی از اطلاعات آن پاک شده است
برای امنیت ورود به قسمت آدمین از کد زیر استفاده کردم


if(!isUserLogedIn() || !isUserAdmin()) { header('location: loginAdmin.php'); }
چطور میشه که می تونند وارد آدمین بشن و اطلاعات را دستکاری کنن
لطفا راهنمایی بفرمایید:گریه::گریه::گریه:

اینطوری نمیشه فهمید که باید کد دو تا تابع isuserlogeding و isuseradmin رو قرار بدهید احتمالش زیاده اونجا باگ داشته باشن . الآن کدتون بدون احتساب این دو تابع یه باگ داره اونم نذاشتن تابع die هست .
یه نکته امنیتی رو خدمتتون بگم که وقتی از تابع header استفاده می کنید باید بعدش حتما تابع die رو بنویسید .

Unique
سه شنبه 24 تیر 1393, 18:15 عصر
یه نکته امنیتی رو خدمتتون بگم که وقتی از تابع header استفاده می کنید باید بعدش حتما تابع die رو بنویسید

میشه توضیح بدین چرا ؟
در حالت بالا تا شرط درست در نیاد اصلا Header صدا زده نمیشه و اگه هم header به مشکل بخوره اصلا امنیتشون خدشه دار نمیشه و die فقط پیام عدم موفقیت header را میده و ادامه اجرا را متوقف میکنه. این را میگم چون خودم تا حالا از die استفاده نکردم ! معمولا از try و exception ها استفاده میکنم اما خیلی دوست دارم دلیل این نکته امنیتی شما را بدونم. نکنه دلیلتون اینه که مانع ادامه اجرا بشیم ؟ خوب با یک else میتونیم خلف شرط را هدایت کنیم. اما معمولا header به مشکل نمیخوره !؟

اگه کل توضیحات سایت php را در مورد header (http://php.net/manual/en/function.header.php) بخونیم کوچکترین نشانه ای توی توضیحات و نظرات در مورد die نیست و اصلا die برای header استفاده نشده.

under22
سه شنبه 24 تیر 1393, 18:48 عصر
میشه توضیح بدین چرا ؟
در حالت بالا تا شرط درست در نیاد اصلا Header صدا زده نمیشه و اگه هم header به مشکل بخوره اصلا امنیتشون خدشه دار نمیشه و die فقط پیام عدم موفقیت header را میده و ادامه اجرا را متوقف میکنه. این را میگم چون خودم تا حالا از die استفاده نکردم ! معمولا از try و exception ها استفاده میکنم اما خیلی دوست دارم دلیل این نکته امنیتی شما را بدونم. نکنه دلیلتون اینه که مانع ادامه اجرا بشیم ؟ خوب با یک else میتونیم خلف شرط را هدایت کنیم. اما معمولا header به مشکل نمیخوره !؟

اگه کل توضیحات سایت php را در مورد header (http://php.net/manual/en/function.header.php) بخونیم کوچکترین نشانه ای توی توضیحات و نظرات در مورد die نیست و اصلا die برای header استفاده نشده.
بنده این مطلب رو جایی خوندم در موردشم تحقیق کردم درسته .
وقتی از تابع Header استفاده می کنیم درخواست به مرورگر کابر میفرسته حالا هر چی باشه اگه کاربر هکر باشه میتونه این درخواست رو اجرا نکنه در نتیجه دستورات بعده دستور header اجرا میشه که این خودش یه باگ امنیتی به حساب میاد . حالا اینجا دستور دیگه ایی نیست ولی این نکته رو کلی گفتم .

Unique
چهارشنبه 25 تیر 1393, 01:34 صبح
حرف شما کاملا درسته و منطقی. در شرایطی قطعا این مشکل امنیتی که میگین پیش میاد.

farzadyazdan
چهارشنبه 25 تیر 1393, 01:50 صبح
سلام به دوستان
شما از کجا میدونین که از این طریق هک شدین شاید به یک روش دیگه به اطلاعات شما دسترسی پیدا کردن مثلا سرور شما هک شده باشه در ضمن برای حفظ امنیت وب سایتتون باید از نکات خیلی زیادی رو در نظر داشته باشین مثل چک کردن session ها و ورودی های کاربر نحوه ارسال اطلاعات به دیتابیس، کد کردن اطلاعات مهم مثل پسورد و....

zohreh.hn
چهارشنبه 25 تیر 1393, 08:42 صبح
سلام کد دو تابعی که گفتم این است


function isUserLogedIn() { if (isset($_SESSION['user'])) return true; return false; } function isUserAdmin() { if (isset($_SESSION['Admin'])) return true; return false; }

و سشن ها در قسمت لوگین مقدار دهی شده اند بصورت زیر


if(isset($_POST['txtUser'])) { $logininfo=chekeduser($_POST['txtUser'],$_POST['txtPass']); if($logininfo) { $_SESSION['user']=$logininfo[0]; $_SESSION['userName']=$logininfo[1]; if($logininfo[2]='1') $_SESSION['Admin']='Administrator'; header('location:AdminIndex.php'); } else { $m='رمز عبور یا نام کاربری شما صحیح نمی باشد'; }
راستی چطور میشه امنیت دیتا بیس را بالا برد
لطفا راهنمایی بفرمایید
درضمن در مورد اطلاعات بالا ممنونم