SQL Injection چیست؟

برای شروع بد نیست بدانیم SQL Injection چیست و یک مثال ساده ی آن را بررسی کنیم.

SQL Injection عبارتست از وارد کردن اطلاعات مخرب در ساختار دستورات SQL که ممکن است باعث آسیب جدی به ساختار و اطلاعات پایگاه داده ی برنامه شود.

SQL Injection

 رویکرد ما در بررسی SQL Injection بررسی کدهای نوشته شده به زبان php است و به همین خاطر مثال ها و راهکارهای ارائه شده همگی منطبق با زبان php می باشند. با این وجود می توان گفت مثال ها خیلی متکی به زبان نیستند و با اندکی تغییر قابل تعمیم به هر زبان برنامه نویسی دیگری که به نوعی با پایگاه های داده از خانواده ی SQL در ارتباط است می باشد.

SQL Injection معمولا از طریق دستکاری ورودی فرم های HTML پیاده می شود ولی راه های دیگری نیز برای ورود دستورات مخرب SQL به برنامه های کاربردی تحت وب وجود دارد. به عنوان شروع مثال یک فرم ورود به بخش مدیریت یک وب سایت نوشته شده به زبان php را بررسی می کنیم.

...
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM users WHERE username='$username'
AND password = '$password'";
...

کد بالا یک مثال ساده با امنیت بسیار ضعیف است و ممکن است به نظر غیر ممکن برسد که کسی از چنین کدی استفاده کند. با این وجود یک جستجوی ساده در گوگل انبوهی از سایت ها و برنامه های کاربردی تحت وب را نشان می دهد که همگی به همین سادگی در معرض  خطر جدی حملات SQL Injection قرار دارند. (بیشتر…)


Matlab – بخش ۱ – مقدمه

قبل از طرح بحث اصلی لازم است قدری در مورد نرم افزار و زبان برنامه نویسی متلب توضیح داده شود. البته سعی نگارنده بر این است که این مطالب در نهایت سادگی و به صورت کاملا خلاصه مطرح شود تا ضمن ارائه ی اطلاعات کافی از اطناب و درازگویی که موجب خسته شدن خواننده می شود جلوگیری شده باشد. در ادامه ی مطالب مربوط به این بحث تاکید بیشتر بر روی ساختار متلب و زبان برنامه نویسی بوده و محیط متلب خیلی مورد بحث نمی باشد. همچنین سعی شده از معرفی بدون هدف دستورات خودداری شود و هر دستور تنها در زمان نیاز و به همراه مثال یا مثال های روشن گر معرفی می شود.

نرم افزار Matlab همانگونه که از نامش هم پیداست محیط کار با ماتریکس هاست که بعدا گسترش یافته و به صورت یک زبان برنامه نویسی قدرتمند در آمده است. متلب که بر پایه ی زبان برنامه نویسی C طراحی شده است به دلیل سادگی شکل دستورات، توابع پیش ساخته ی متعدد، قابلیت بسط و گسترش بالا و قدرت و انعطاف پذیری مثال زدنی در حال حاضر در بسیاری از شاخه های تخصصی علوم و مهندسی کاربرد و نقش تعیین کننده دارد.

تفاوت بارز متلب با سایر زبان های برنامه نویسی در این است که اصولا در متلب تمام متغیر ها به صورت ماتریسی تعریف می شوند و حتی یک عدد منفرد هم در یک ماتریس با ابعاد ۱*۱ ذخیره می شود.

(بیشتر…)