اعتبار سنجی و پاکسازی در برنامه های کاربردی وب

Summarize this content to 400 words in Persian Lang
آنها چه هستند و چرا حیاتی هستند؟
اعتبار سنجی و سالم سازی بدون شک یکی از ارکان امنیت در برنامه های کاربردی وب است. در حالی که اعتبارسنجی تأیید میکند که دادههای دریافتی در قالب مورد انتظار هستند، پاکسازی آن دادهها را تمیز و تبدیل میکند تا مطمئن شود برای پردازش امن هستند.
اعتبار سنجی
از یک طرف، اعتبارسنجی مانند یک دربان سختگیر است که قبل از ورود به نمایش، بلیت دارید یا خیر. نوع، قالب و محتوای داده های دریافتی را بررسی می کند. بیایید به نمونه ای از کد آسیب پذیر بدون اعتبار سنجی نگاه کنیم:
$idade = $_POST[‘idade’];
$query = “SELECT * FROM utilizadores WHERE idade = $idade”;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این کد یک دعوت باز برای حملات تزریق SQL است، زیرا ورودی می تواند به راحتی رفتار پرس و جو را دستکاری کند. در عوض، باید کاری انجام دهید:
$idade = filter_var($_POST[‘idade’], FILTER_VALIDATE_INT);
if ($idade === false || $idade === null) {
echo(“Idade inválida”);
}
// Cria uma conexão
$conn = new mysqli($servername, $username, $password, $dbname);
// Executa um Prepared Statement
$stmt = $conn->prepare(“INSERT INTO utilizadores (idade) VALUES (?)”);
$stmt->bind_param(“i”, $idade);
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
پی اچ پی ویکی | filter_var() – یک متغیر را با یک فیلتر مشخص فیلتر می کند
پاکسازی
از سوی دیگر، سرویس بهداشتی مانند فیلتر آب است که ناخالصی ها را از بین می برد. داده های بالقوه خطرناک را به فرمت های ایمن تبدیل می کند. بیایید به یک مثال آسیب پذیر دیگر نگاه کنیم:
$nome = $_GET[‘nome’];
echo “Olá, $nome!”;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این کد می تواند منجر به حمله XSS شود. یک نسخه ضدعفونی شده این خواهد بود:
$nome = htmlspecialchars($_GET[‘nome’]);
echo “Olá, $nome!”;
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
اثر مورد انتظار تبدیل کاراکترهای “&، '، “، ” به معادل آنها در ENTITIES HTML است، به این معنی که آنها صرفاً به نمادهای بصری تبدیل می شوند که هیچ تاثیری از نظر کد تفسیر شده توسط مرورگر ندارند.
پی اچ پی ویکی | htmlspecialchars() – تبدیل کاراکترهای خاص به موجودیت های HTML
اعتبار سنجی سمت مشتری
توجه به این نکته مهم است که اگرچه اعتبار سنجی سمت مشتری برای بهبود تجربه کاربر مفید است، اما هرگز برای اطمینان از امنیت کافی نیست. به هر حال، یک مهاجم به راحتی می تواند این چک ها را دور بزند. بنابراین، اعتبار سنجی سمت سرور ضروری است.
بنابراین، همه موارد بهداشتی یکسان نیستند. بسته به زمینه ای که داده ها در آن مورد استفاده قرار خواهند گرفت، تکنیک های مختلفی باید اعمال شود. به عنوان مثال، داده هایی که در یک پایگاه داده SQL وارد می شوند، نیاز به پاکسازی متفاوتی نسبت به آنچه در صفحه HTML نمایش داده می شوند، دارند.
چرخ را دوباره اختراع نکنید
خوشبختانه، شما نیازی به ایجاد همه این محافظ ها از ابتدا ندارید. کتابخانهها و چارچوبهای متعددی وجود دارند که کارکردهای اعتبارسنجی و سالمسازی قوی را ارائه میکنند. با این حال، درک نحوه عملکرد آنها برای استفاده صحیح از آنها بسیار مهم است.
آخرین اما نه کم اهمیت، انجام منظم تست های قلم ضروری است. این تستها حملات واقعی را شبیهسازی میکنند و میتوانند نقصهایی را که مورد توجه قرار نگرفتهاند را آشکار کنند. به یاد داشته باشید: بهتر است قبل از حمله مهاجمان، آسیب پذیری ها را کشف کنید. اگر ابتکار عمل برای انجام این کار را دارید، می توانید با فهرست کردن شرکت خود در پلتفرم Bug Bounty شروع کنید، جایی که هکرهای اخلاقی در ازای دریافت غرامت، نقص های برنامه شما را گزارش می کنند.
آنها چه هستند و چرا حیاتی هستند؟
اعتبار سنجی و سالم سازی بدون شک یکی از ارکان امنیت در برنامه های کاربردی وب است. در حالی که اعتبارسنجی تأیید میکند که دادههای دریافتی در قالب مورد انتظار هستند، پاکسازی آن دادهها را تمیز و تبدیل میکند تا مطمئن شود برای پردازش امن هستند.
اعتبار سنجی
از یک طرف، اعتبارسنجی مانند یک دربان سختگیر است که قبل از ورود به نمایش، بلیت دارید یا خیر. نوع، قالب و محتوای داده های دریافتی را بررسی می کند. بیایید به نمونه ای از کد آسیب پذیر بدون اعتبار سنجی نگاه کنیم:
$idade = $_POST['idade'];
$query = "SELECT * FROM utilizadores WHERE idade = $idade";
این کد یک دعوت باز برای حملات تزریق SQL است، زیرا ورودی می تواند به راحتی رفتار پرس و جو را دستکاری کند. در عوض، باید کاری انجام دهید:
$idade = filter_var($_POST['idade'], FILTER_VALIDATE_INT);
if ($idade === false || $idade === null) {
echo("Idade inválida");
}
// Cria uma conexão
$conn = new mysqli($servername, $username, $password, $dbname);
// Executa um Prepared Statement
$stmt = $conn->prepare("INSERT INTO utilizadores (idade) VALUES (?)");
$stmt->bind_param("i", $idade);
پی اچ پی ویکی | filter_var() – یک متغیر را با یک فیلتر مشخص فیلتر می کند
پاکسازی
از سوی دیگر، سرویس بهداشتی مانند فیلتر آب است که ناخالصی ها را از بین می برد. داده های بالقوه خطرناک را به فرمت های ایمن تبدیل می کند. بیایید به یک مثال آسیب پذیر دیگر نگاه کنیم:
$nome = $_GET['nome'];
echo "Olá, $nome!";
این کد می تواند منجر به حمله XSS شود. یک نسخه ضدعفونی شده این خواهد بود:
$nome = htmlspecialchars($_GET['nome']);
echo "Olá, $nome!";
اثر مورد انتظار تبدیل کاراکترهای “&، '، “، <، >” به معادل آنها در ENTITIES HTML است، به این معنی که آنها صرفاً به نمادهای بصری تبدیل می شوند که هیچ تاثیری از نظر کد تفسیر شده توسط مرورگر ندارند.
پی اچ پی ویکی | htmlspecialchars() – تبدیل کاراکترهای خاص به موجودیت های HTML
اعتبار سنجی سمت مشتری
توجه به این نکته مهم است که اگرچه اعتبار سنجی سمت مشتری برای بهبود تجربه کاربر مفید است، اما هرگز برای اطمینان از امنیت کافی نیست. به هر حال، یک مهاجم به راحتی می تواند این چک ها را دور بزند. بنابراین، اعتبار سنجی سمت سرور ضروری است.
بنابراین، همه موارد بهداشتی یکسان نیستند. بسته به زمینه ای که داده ها در آن مورد استفاده قرار خواهند گرفت، تکنیک های مختلفی باید اعمال شود. به عنوان مثال، داده هایی که در یک پایگاه داده SQL وارد می شوند، نیاز به پاکسازی متفاوتی نسبت به آنچه در صفحه HTML نمایش داده می شوند، دارند.
چرخ را دوباره اختراع نکنید
خوشبختانه، شما نیازی به ایجاد همه این محافظ ها از ابتدا ندارید. کتابخانهها و چارچوبهای متعددی وجود دارند که کارکردهای اعتبارسنجی و سالمسازی قوی را ارائه میکنند. با این حال، درک نحوه عملکرد آنها برای استفاده صحیح از آنها بسیار مهم است.
آخرین اما نه کم اهمیت، انجام منظم تست های قلم ضروری است. این تستها حملات واقعی را شبیهسازی میکنند و میتوانند نقصهایی را که مورد توجه قرار نگرفتهاند را آشکار کنند. به یاد داشته باشید: بهتر است قبل از حمله مهاجمان، آسیب پذیری ها را کشف کنید. اگر ابتکار عمل برای انجام این کار را دارید، می توانید با فهرست کردن شرکت خود در پلتفرم Bug Bounty شروع کنید، جایی که هکرهای اخلاقی در ازای دریافت غرامت، نقص های برنامه شما را گزارش می کنند.