• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
راهنمایی در کد امنیتی برای اطلاعات ورودی و چاپ اونها
#1
سلام
من از کد زیر برای بررسی مقادیر ورودی توسط کاربر، ذخیره در پایگاه داده و چاپ اطلاعات استفاده میکنم:
کد پی‌اچ‌پی:
<?php
if (!function_exists('test_input')) {
function 
test_input($data)
{
   
$data trim($data);
   
$data stripslashes($data);
   
$data htmlspecialchars($data);
   
$data strip_tags($data);
   return 
$data;
}}
$nametest_input($_POST["name"]);
$pictest_input($_POST["pic"]);
$pric= (int)$_POST["pric"];
?>
میخوام بدونم برای امنیت کافیه یا اینکه بازم امکان هک وجود داره؟
و اینکه مثلا برای چاپ اطلاعات لازمه باز بررسی بشه به این شکل:
کد پی‌اچ‌پی:
<?php echo htmlspecialchars($name); ?>
یا بعد از استفاده از کد بالا نیاز نیست و همینوری کفایت میکنه:
کد پی‌اچ‌پی:
<?php echo $name?>
البته برای گرفتن اطلاعات ورودی از preg_match هم استفاده می کنم
  پاسخ
تشکر شده توسط :
#2
دوستان یه نظری یا روش بهتری در مورد این روش بدین لطفا
  پاسخ
تشکر شده توسط :
#3
درباره این موضوع مطالب بسیار در همین انجمن و اینترنت وجود داره - جستجو کن
بعلاوه باید راجب انواع آسیب پذیریها و روش های نفوذ تحقیق کنی و اونوقت میدونی که چکار باید انجام بدی - چی رو برای کجا استفاده کنی

نه اینکه هرچی تابع فیلترسازی وجود داره رو یکجا استفاده کنی
اینطوری برعکس داده ها رو تخریب میکنی
وبلاگ: Yousha.Blog.ir


کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بیشتر => نگهداری بهتر
  پاسخ
تشکر شده توسط : kingblog ayoubsys netparadis
#4
سلام . بهتره برای جلوگیری از ایجاد باگ در اسکریپت ورودی های که از کاربر می گیرید همان ورودی ها با نوع داده ای باشند که شما قصد دارید استفاده کنید مثلا اگر از کاربر عدد می گیرید و در کوئری sql استفاده می کنید بهتره از تابع intval استفاده کنید تا تمام مقادیر دیگه خود به بخود sanitize یا پاکسازی بشه و مشکلی از لحاظ امنیتی پیش نیاد

توابع htmlentities و زیر مجموعه های آنها بیشتر مربوط به کار با رشته ها است و بهتره هر کدام را در جای خود استفاده کنید تا مقادیر بیش از حد دستکاری و تغییر نکنند

برای اینکار php تابع filter_var با یک سری attribute ها معرفی کرده که بسیار عالی هستند و می توانید در پروژه هاتون ازش استفاده کنید.

http://php.net/manual/en/function.filter-var.php

موفق باشید
  پاسخ
تشکر شده توسط : kingblog
#5
مباحث امنیتی در چند دسته متفاوت هستند و تقریبا میشه گفت مهم ترین اونها sql injection و xss هستند. برای sql injection کافی است از روش prepare خود mysqli, pdo یا هرفریمورکی استفاده کنید و برای xss هم کافیه کل تگ های html رو حذف کنید و خروجی رو هم htmlspecialchars کنید تا این هم کافیه و مشکلی پیش نمیاد.
میثم محمودی | انجمن کد ایگنایتر فارسی
--------------------------
هرگز نمي توان با آدمهاي کوچک کارهاي بزرگ انجام داد
  پاسخ
تشکر شده توسط : kingblog ayoubsys


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان