امنیت در سی شارپ

فقق

Banned
من از دوستان این سوال رادارم که امنیت در سی شارپ چیست اصلا چه کار می کنه آیا کسی هست یک نمونه مثال بزنه من می خوامم ببینم وقتی می گن یک برنامه از امنیت بالا برخوردار است مثل چه کدی نوشته
سوال بعدی من این است که من می خواستم ببینم برنامه ای که برای بانک سپه و ملی ووووو.. نوشته شده برنامه ی موبایل را نمی گم برنامه ای که کارکنانش با آن کار می کنن با چی نوشته شده (الکی نگید ) من آنروز برنامه بانک را مشاهده کردم دارای تکست و لیست باکس و دکمه بود ولی تا حدودی هم بعضی کنترلاش مثل داس بود
اگه من بخوام برای بانک ملت برنامه نویسی کنم چه کار باید بکنم و از چه بانک اطلاعاتی استفاده کنم و چقدر باید امنیت درونش باید باشد کسی می تونه در این مود حرفی بگه ! من من سوالی داشتم من کسی را می شناسم که برنامه ای برای بانکهای تهران نوشته و بانکها به او 200000000 میلیون تومان پول دادن و من شاهدم .حالا من این سوال را دارم اگه کسی بخواد برنامه بانک را بنویسه آیا باید هکر یا در زمینه امنیت حرفه ای باشد که این سالها باید وقت گذاشت که حرفه ای شد ؟حرف آخرم من سی شارپ دات نت کارم نه تا اون حد می خوام ببینم با همین سی شارپ می تونم برنامه بانک بنویسم و چه امنیت و بانک اطلاعاتی باید برای آن به کار گیرم ؟؟؟؟؟؟؟ببخشید زیاد شد
راستی اردت مند ..........> ناظم انجمن
 

the_king

مدیرکل انجمن
من از دوستان این سوال رادارم که امنیت در سی شارپ چیست اصلا چه کار می کنه آیا کسی هست یک نمونه مثال بزنه من می خوامم ببینم وقتی می گن یک برنامه از امنیت بالا برخوردار است مثل چه کدی نوشته
فرض کنیم یک بانک اطلاعاتی داریم و یک Table که اطلاعات UserName و Password کاربران نرم افزار
داخلش نگهداری می شه و این بانک اطلاعاتی با حداکثر امنیت ممکن و تحت تدابیر شدید امنیتی حفاظت شده
که مو لای درزش نمیره.
حالا من برنامه نویسی هستم که قراره برای Login کردن و ورود کاربر به داخل نرم افزار یک فرم طراحی کنم
که ابتدای اجرای برنامه نشون داده بشه و اگر کاربر مشخصات UserName و Password رو درست وارد کرد اجازه
عبور بده و اگر اشتباه وارد کرد اجازه عبور نده.

اگر تازه کار و با تدابیر امنیتی آشنا نباشم احتمالا این کد ساده رو می نویسم و ذوق هم می کنم که کار می کنه :
کد:
            string filter = "UserName='" + textBox1.Text + "'"
                + " AND Password='" + textBox2.Text + "'";
            DataRow[] row = table.Select(filter);
            if (row.Length == 0)
            {
                MessageBox.Show("Error: Invalid username or password", "Login");
            }
            else
            {
                Form1 f1 = new Form1();
                f1.Show();
            }
اگر کاربر در textBox1 به عنوان UserName متن ali و در textBox2 به عنوان Password متن 123456
رو بنویسه، filter برابر این رشته خواهد شد :
کد:
UserName='ali' AND Password='123456'

اما این کد یک ایراد امنیتی خیلی بزرگ داره، به کاربر اطمینان کامل کرده و هر چی که کاربر درون textBox1
و textBox2 نوشته عینا به عنوان فرمان Select تحویل سیستم مدیریت بانک اطلاعاتی داده. حالا اگر یک هکر
بجای متن Password در textBox2 متن زیر رو بنویسه، همه معادلات امنیتی بهم می خوره :
کد:
' OR '1' ='1
چون اونوقت filter این رشته خواهد شد :
کد:
UserName='ali' AND Password='' OR '1' ='1'
یعنی اگر کاربر UserName و Password صحیح رو وارد کرده و یا 1 برابر 1 است (که همیشه هست) به کاربر مجور
ورود به نرم افزار رو صادر کن. این شرط همیشه برقرار است و هکر بدون نیاز به دانستن نام کاربری و رمز عبور
بدون مشکل از محافظ امنیتی می گذره، تازه این فقط یک مثال ساده است.

یک کد ایمن تمامی اطلاعات ورودی های کاربر رو بررسی می کنه تا اطلاعات در قالب معتبری باشند، مثلا
فقط حروف و ارقام و یکسری کاراکتر خاص رو به عنوان نام کاربری و رمز عبور می پذیره :
کد:
        private bool IsValidInput(string text)
        {
            string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890_-.";
            for (int i = 0; i < text.Length; i++)
            {
                if (chars.Contains(text.Substring(i, 1).ToUpper()) == false)
                    return false;
            }
            return true;
        }

کد:
            if ((IsValidInput(textBox1.Text)) && (IsValidInput(textBox2.Text)))
            {
                string filter = "UserName='" + textBox1.Text + "'"
                    + " AND Password='" + textBox2.Text + "'";
                DataRow[] rows = table.Select(filter);
                if (rows.Length > 0)
                {
                    Form1 f1 = new Form1();
                    f1.Show();
                    return;
                }
            }
            MessageBox.Show("Error: Invalid username or password", "Login");

سوال بعدی من این است که من می خواستم ببینم برنامه ای که برای بانک سپه و ملی ووووو.. نوشته شده برنامه ی موبایل را نمی گم برنامه ای که کارکنانش با آن کار می کنن با چی نوشته شده (الکی نگید ) من آنروز برنامه بانک را مشاهده کردم دارای تکست و لیست باکس و دکمه بود ولی تا حدودی هم بعضی کنترلاش مثل داس بود
چند مساله متفاوت باعث شده که نرم افزار های اداری از رده خارج و قدیمی باشند.
اولین دلیل هزینه طراحی نرم افزار های جدید زیاده، کمبود بودجه هم که همیشه هست.
ثانیا سخت افزار و نرم افزار سیستم های موجود خیلی بروز و مدرن نیست.
ثالثا حفاظت کردن یک نرم افزار امنیتی تحت DOS که با ++C و اسمبلی نوشته شده ساده تر از
جاوا یا زبان های تحت NET. ئه.
رابعا سواد بعضی از همکاران برنامه نویسی که سالها با سازمان های دولتی و ادارات همکاری کرده اند،
همچنان در حد VB for DOS و Fox Pro باقی مونده و همچنان با همان روالی که 15 سال پیش برنامه می نوشتند
کار می کنند، البته انصافا همون ها به صد تا مهندس نرم افزاری که الان دانشگاه هامون تحویل جامعه می دهند
می ارزند.

اگه من بخوام برای بانک ملت برنامه نویسی کنم چه کار باید بکنم و از چه بانک اطلاعاتی استفاده کنم و چقدر باید امنیت درونش باید باشد کسی می تونه در این مود حرفی بگه ! من من سوالی داشتم من کسی را می شناسم که برنامه ای برای بانکهای تهران نوشته و بانکها به او 200000000 میلیون تومان پول دادن و من شاهدم .حالا من این سوال را دارم اگه کسی بخواد برنامه بانک را بنویسه آیا باید هکر یا در زمینه امنیت حرفه ای باشد که این سالها باید وقت گذاشت که حرفه ای شد ؟
بانک اطلاعاتی خودش روی سروری نگهداری میشه که از دسترسی افراد متفرقه خارجه، امنیت سرور هم
مستقل از برنامه ای است که شما می نویسید. شما باید صرفا جلوی دسترسی کاربران متفرقه و یا دسترسی
خارج حیطه مسئولیت کاربر رو بگیرید. طبیعتا هم تا زمانی که از تدابیر امنیتی مربوط به مباحث بانک اطلاعاتی
مطلع نباشید، نمی توانید برنامه ایمنی بسازید. الزاما قرار نیست هکر یا متخصص امنیت باشید، حتی بهتر است
بجای اینکه خودتان شخصا امنیت نرم افزار رو بررسی کنید با یک یا چند متخصص قراردادی ببندید که برنامه شما رو
بررسی کنند تا از نظر امنیتی مشکلی نداشته باشه.

حرف آخرم من سی شارپ دات نت کارم نه تا اون حد می خوام ببینم با همین سی شارپ می تونم برنامه بانک بنویسم و چه امنیت و بانک اطلاعاتی باید برای آن به کار گیرم ؟؟؟؟؟؟؟ببخشید زیاد شد
یکسری موارد امنیتی ربطی به برنامه نویس نداره، مثلا کاربر باید از رمز عبور و نام کاربری اش حفاظت کنه، جلوی
غریبه ها لاگین نکنه، محیط سیستم امن باشه، دوربین مخفی و نرم افزار جاسوسی و غیره رویش نصب نباشه.
شبکه ای که بانک اطلاعاتی رویش سوار شده امن باشه، رمز عبور به حد کافی طولانی و ایمن باشه و ...
تعیین کردن بانک اطلاعاتی و سرورش و ... هم ربطی به برنامه نویس نداره، این موارد مربوط به دپارتمان کامپیوتر
و مدیر فنی شبکه و سرور ئه. شما صرفا باید به بانک اطلاعاتی متصل شوید، برای کد نباید فرقی بکنه که
از SQL Server استفاده شده یا Oracle یا Microsoft Access یا ...
شما صرفا باید یکسری موارد امنیتی دسترسی به بانک اطلاعاتی رو رعایت کنید. کرک شدن نرم افزار و غیره
هم چیزی نیست که شما بتوانید برایش تضمینی ارائه کنید، نرم افزار های امنیتی مرسوم که قراره جلوی
کرک شدن نرم افزار شما رو بگیرند نتوانسته اند جلوی کرک شدن خودشون رو بگیرند و با کرک نصب می شوند.
 

فقق

Banned
معنای این کلمه

' or '1' ='1
سلام من می خواستم بپرسم معنای این کلمه چیست ؟
دوم: یک هکر چطوری و چه جوری با این کدها آشنایی پیدا می کند ؟
چون خیلی از این کد ها زیاد هستند فکر کنم
ممنون می شم
 

فقق

Banned
سوال دوم

آیا من با سی پلاس پلاس تحت داس می تونم نرم افزار بانک بنویسم ؟
من از صحبت شما این برداشت را کردم برای نرم افزار بانک:
1 :یک برنامه که شمایل و کارهای خواسته شده را بکند
2: یک بانک اطلاعاتی می سازیم و آن را با برنامه ارتباط می دهیم
3:امنیت پایگاه و وصل شدن ان از شهرستان به کمک خود سرور ها و امنیت کارهای بانک است نه من برنامه نویس
4:من فقط برنامه ایجاد وصل شدن به بانک را صورت می دهم
 

the_king

مدیرکل انجمن
' or '1' ='1
سلام من می خواستم بپرسم معنای این کلمه چیست ؟
دوم: یک هکر چطوری و چه جوری با این کدها آشنایی پیدا می کند ؟
چون خیلی از این کد ها زیاد هستند فکر کنم
ممنون می شم
اینها کد نیست، معنای خاصی هم نداره، فقط یک گزاره شرطی است که همیشه برقراره (True است).
هکر فقط باید گزاره ای رو ایجاد کنه که True باشه، حالا به هر شکلی که بنویسه مهم اینه که True باشه.
عبارت '1' یک رشته است که داخلش کاراکتر 1 قرار داره، می توانید بجایش هر مقدار دیگری را قرار دهید.
عملگر = هم که عملگر مقایسه دو عبارت است.
OR هم که عملگر بولی "یا" است، یعنی اگر در گزاره شرطی یک طرف یا دو طرف OR صحیح باشند،
نتیجه عملگر OR هم صحیح است. OR فقط زمانی False است که هر دو طرف اش False باشند.

هکر یک طرف OR رو نمی تونه True کنه چون رمز عبور و نام کاربری رو نمی دونه، اما می تونه در سمت
راست OR گزاره ای بنویسه که همیشه True باشه، همین هم کفایت می کنه.
همواره هر مقداری با خودش برابره، مثلا 1 با 1 برابره، پس یک طرف گزاره OR صحیح است و در نتیجه OR
هم نتیجه True میده.

آیا من با سی پلاس پلاس تحت داس می تونم نرم افزار بانک بنویسم ؟

زبان #C برنامه Console ای می سازه، اما برنامه های کنسول ای ویژه ویندوز. این برنامه ها در DOS قابل اجرا
نیستند. درسته که ظاهرشون یک پنجره مشکی و متنی است، اما از امکانات و روتین های ویندوز استفاده می کنند.
برنامه های کنسول ای تحت ویندوز شبیه Command Prompt ویندوز هستند، با محیط MS-DOS فرق دارند و در
ویندوز اجرا می شوند، نه DOS . اگر با #C برنامه کنسولی بسازید باید در ویندوز اجرایش کنید که صد البته مناسب
بانک نیست، چون نرم افزار مدیریت بانک با کاربرش تعامل زیادی دارد، بهتر است از محیط گرافیکی ویندوز استفاده کنید.

من از صحبت شما این برداشت را کردم برای نرم افزار بانک:
1 :یک برنامه که شمایل و کارهای خواسته شده را بکند
2: یک بانک اطلاعاتی می سازیم و آن را با برنامه ارتباط می دهیم
3:امنیت پایگاه و وصل شدن ان از شهرستان به کمک خود سرور ها و امنیت کارهای بانک است نه من برنامه نویس
4:من فقط برنامه ایجاد وصل شدن به بانک را صورت می دهم
بله.
 

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

بالا