PDA

View Full Version : سه سوال امنیتی برای فرم های سایتم



mokhtasatxyz
سه شنبه 19 فروردین 1393, 09:47 صبح
سلام
سه سوال
1- ایا برای جلوگیری از sql injection لازم است داده های دریافت شده از ابزاری انتخابی مانند radio button - checkbox و حتی فیلد های
hiddenهم از دستورات گفته شده مانند mysql_escape_string استفاده کرد یا فقط برای فیلد های قابل نوشتن مانند text ها؟
2- عبارات با قاعده را چگونه بنویسم و از ان استفاده کنم؟مبتدی هستم ،لطفا ساده روان و با مثال.
3- در سایت w3schoolاز یک مشکل امنیتی گفته :
The $_SERVER["PHP_SELF"] is a super global variable that returns the filename of the currently executing script.

So, the $_SERVER["PHP_SELF"] sends the submitted form data to the page itself,instead of jumping to a different page. This way, the user will get error messages on the same page as the form

What is the htmlspecialchars() function?

The htmlspecialchars() function converts special characters to HTML entities. This means that it will replace HTML characters like < and > with &lt; and &gt;. This prevents attackers from exploiting the code by injecting HTML or Javascript code (Cross-site Scripting attacks) in forms

Big Note on PHP Form SecurityThe $_SERVER["PHP_SELF"] variable can be used by hackers! If PHP_SELF is used in your page then a user can enter a slash (/) and then some Cross Site Scripting (XSS) commands to execute.


بعدش گفته از این روش استفاده کنید:$_SERVER["PHP_SELF"] exploits can be avoided by using the htmlspecialchars() function

< form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

The htmlspecialchars() function converts special characters to HTML entities


حالا سول سوم من این است .کد های یا برنامه dream weaver براینم نوشته به صورت زیر است:$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}


<form method="post" name="form1" action="<?php echo $editFormAction; ?>">


حالا من میتوانم تغییراتی که سایت w3school گفته را انجام بدهم

abolfazl-z
جمعه 22 فروردین 1393, 13:19 عصر
1- ایا برای جلوگیری از sql injection لازم است داده های دریافت شده از ابزاری انتخابی مانند radio button - checkbox و حتی فیلد های
hiddenهم از دستورات گفته شده مانند mysql_escape_string استفاده کرد یا فقط برای فیلد های قابل نوشتن مانند text ها؟


بستگی به نوع طراحی تون داره که ی خواهد در داخل سایت ذخیره شود یا خیر و...

مثلا من یک input از نوع sex میگیرم که برای من مهم نیست که مقدار اش چی باشه.

اگر sex بود یعنی مذکر و اگر نبود یعنی مونث همین. پس این نیاز نیست که هیچ عملی رویش انجام بشود.


- در سایت w3schoolاز یک مشکل امنیتی گفته :

کلا آرایه های عمومی Superglobals (http://www.php.net/manual/es/language.variables.superglobals.php) آرایه های خطرناکی هستند و از نظر من قبل از استفاده از آن باید دربارشون تحقیق کنید و ببینید که مشکل ساز نباشند.

مثلا الان HTTP_HOST خطر ناک تر هست یا SERVER_NAME ؟

نمیشه گفت که HTTP_HOST خطرناک تر هست ! چون که HTTP اول اش دارد ! بلکه SERVER_NAME هم خطرناک هست چونکه SERVER_NAME همانند HTTP_HOST هست.

اگر فیلتر های لازم انجام نشود مشکل ساز می شود.

mokhtasatxyz
یک شنبه 31 فروردین 1393, 19:03 عصر
مثلا من یک input از نوع sex میگیرم که برای من مهم نیست که مقدار اش چی باشه.

اگر sex بود یعنی مذکر و اگر نبود یعنی مونث همین. پس این نیاز نیست که هیچ عملی رویش انجام بشود
پس اگر فرض کنیم دو radio داشته باشیم به نام مثلا sex و به value انها هیچ مقداری ندهیم شرط زیر کافی است و باز هم متغییر sex ما isset می شود

if(isset($_post['valuename']))
{
$a=1;
}

eshpilen
یک شنبه 31 فروردین 1393, 19:41 عصر
هیدن هم میتونه خطرناک باشه، چک باکس هم همینطور، رادیو هم!
منتها بستگی داره شما چطور استفاده کرده باشید آیا value اونا رو در کوئری یا جای دیگری بصورت مستقیم استفاده کرده باشید یا نه.