محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

آموزش 2 نمونه کد جلوگیری از حملات DoS در جاوا و ASP.NET

برخی اوقات این برداشت می شود که حملات Denial Of Service یا DOS فقط در لایه شبکه یا Network و پروتکل های وابسته به آن انجام می شود در صورتیکه این برداشت اشتباه است ، هر چیزی در هر لایه ای که باعث از سرویس خارج شدن یک وب سایت یا سرویس شود به عنوان حمله Denial Of Service در نظر گرفته می شود. اگر کد نویسی وب سایت شما به درستی انجام نشود و به Query های اشتباهی پاسخ بدهد ممکن است باعث هنگ کردن و از سرویس خارج شدن وب سایت شما بشود ، به قطعه کد زیر دقت کنید :

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
Statement stmnt = conn.createStatement ();
ResultSet rsltset = stmnt.executeQuery () ;
Stmnt.Close ();

کد بالا به نظر شما ممکن است یک کد ساده و کاربردی محسوب شود اما در این قطعه کد تشریح نشده است که در برابر درخواست های اشتباهی یا Query های بی ربط و چرت و پرت چه پاسخی باید بدهد و قطعه کد همه نوع Query را مجبور است پاسخ بدهد ، همین موضوع باعث می شود که مثلا اگر یک Null Query یا یک Query خالی از این قطعه کد گرفته شود بصورت نامتناهی Query اجرا شود زیرا هیچ شرطی در قطعه کد ما نیامده است که در صورت بروز چنین مشکلی چه کاری باید انجام شود و در نهایت باعث از کار افتادن سرویس خواهد شد ، اگر بخواهیم قطعه کد بالا را منظم کنیم و کاری کنیم که در برابر حملات DOS مقاومت داشته باشد باید آن را به شکل زیر تغییر بدهیم :

Statement stmnt ;
try {stmnt = conn.createStatement ();
stmnt.executeQuery () ;}
finally {
If (stmnt! = null) {
try (stmnt.close () ;
} catch (SQLException sqlexp) {}
} catch (SQLException sqlexp) {}

خوب به نظر شما در کد دوم چه اتفاقی افتاد ؟ در قطعه کد دوم ما تعریف کردیم که اگر query ها بصورت خالی یا null تعریف شدند در نهایت finally چگونه با این موارد برخورد کند. اگر کدهای اشتباهی هم به این قطعه کد ارسال شوند باز هم پاسخی از طرف سرور داده نخواهد شد تا سرور DOS نشود. اینکار دیگر به درخواست های مزاحم و null اجازه تخریب کد و هنگ کردن سرویس را نخواهد داد.برای اینکه در لایه Application حملات DOS اتفاق نیوفتد شما همیشه باید مکانیزم برخورد با خطاها را در کدهای خودتان تعریف کنید ، هر نوع خطای احتمالی باید در پاسخ به درخواست های کاربر در نظر گرفته شود. ITPRO باشید

نویسنده : محمد نصیری

منبع : انجمن تخصصی فناوری اطلاعات ایران

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

محمد نصیری هستم ، هکر قانونمند و کارشناس امنیت سایبری ، سابقه همکاری با بیش از 50 سازمان دولتی ، خصوصی ، نظامی و انتظامی در قالب مشاور ، مدرس و مدیر پروژه ، مدرس دوره های تخصص شبکه ، امنیت ، هک و نفوذ ، در حال حاضر در ایران دیگه رسما فعالیتی غیر از مشاوره انجام نمیدم و مقیم کشور ترکیه هستم ، عاشق آموزش و تدریس هستم و به همین دلیل دوره های آموزشی که ضبط می کنم در دنیا بی نظیر هستند.

نظرات