سلام و خسته نباشید به دوستان عزیز
سوالاتی در مورد امنیت 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 خاص انجام بشه