تالار گفتمان nCIS.ir

نسخه‌ی کامل: امنیت در ajax
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام و خسته نباشید به دوستان عزیز
سوالاتی در مورد امنیت jaax داشتم.
خودمون میدونیم که هرچیزی که سمت کاربر باشه امنیت پایینی داره:
حالا ajax هم از کد های javascript هستش و سمت کاربر محسوب میشه.
در این صورت چ طوری میتونیم امنیت رو تامین کنم.
منظورم اینه که یکی بیاد کدهای جاوااسکریپت رو دستکاری کنه و پشت سر هم به سرور درخواست بفرسته و باعث اختلال بشه.
در این مورد پیشنهاد و یا راه حلی دارید.
خیلی ممنون
درمورد CSRF protection در درخواستهای AJAX تحقیق کنید.

//See: https://gist.github.com/ziadoz/3454607
//See: http://blog.ircmaxell.com/2013/02/preven...tacks.html


<?php

// Start a session (which should use cookies over HTTP only).
session_start();

// Create a new CSRF token.
if (! isset($_SESSION['csrf_token'])) {
   $_SESSION['csrf_token'] = base64_encode(openssl_random_pseudo_bytes(32));
}

// Check a POST is valid.
if (isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
   // POST data is valid.
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="utf-8" /> 
   <title>PHP CSRF Protection</title>

   <script>
   window.csrf = { csrf_token: '<?php echo $_SESSION['csrf_token']; ?>' };

   $.ajaxSetup({
       data: window.csrf
   });

   $(document).ready(function() {
       // CSRF token is now automatically merged in AJAX request data.
       $.post('/awesome/ajax/url', { foo: 'bar' }, function(data) {
           console.log(data);
       });
   });
   </script>
</head>
<body>
   <form action="index.php" method="post" accept-charset="utf-8">
       <input type="text" name="foo" />
       <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>" />
       <input type="submit" value="Submit" />
   </form>
</body>
</html>

اطلاعات شما که سمت کلاینت پرذازش نمیشن و سمت سرور اینکار انجام میشه و همون کارایی که قبلا می کردین یعنی جلوگیری از حملات SQL Injection, CSRF, XSS و ... رو باید ایننجا هم انجام بدین. فقط تو روش ajax باید حواستون باشه اجازه دسترسی مستقیم فایل php رو به کاربر ندهید و فقط از طریق اتفاق افتادن اون event خاص انجام بشه