Безопасно ли хранить имя пользователя / идентификатор пользователя сеанса входа в локальном хранилище и затем передавать его со страницы на страницу? - PullRequest
0 голосов
/ 24 мая 2018

Я использую следующий скрипт для аутентификации моего мобильного приложения.Я знаю, как использовать хэш php и функцию verify () для хеширования пароля пользователя.

При входе в систему я сохранял имя пользователя / идентификатор пользователя в локальном хранилище, а затем передавал его со страницы на страницу для других запросов к базе данных.Защищена ли эта реализация?А как насчет атак типа

1.) Прямой доступ к странице, поскольку локальное хранилище работает с JavaScript.Злоумышленник не сможет изменить локальное имя пользователя сеанса.

2.) Как насчет атаки фиксации сеанса / перехвата сеанса.Защитит ли меня от этого локальное хранилище.

3.) Как реализовать атаку по межсайтовым запросам на форму на странице welcome.html.

4.) Как лучше всего обезопасить себя?мое мобильное приложение через аутентификацию.Я слышал о токене, но не представляю, как он работает с мобильным приложением.

<script>

$(document).ready(function(){
    $('#login').click(function(){

var username = localStorage.getItem("username");
var password = $('#password').val();

        if(username==""){

            alert('please Enter Username');     
        }
else if(password==""){

            alert('please Enter Username Password');    

        }
else{
var datasend = "username="+ username + "&password=" + password;

        $.ajax({

            type:'POST',
            url:'login.php',
            data:datasend,
                        crossDomain: true,
            cache:false,
            success:function(msg){

                $('#alertbox_img').fadeIn('slow').prepend(msg);

                $('#alerts_img').delay(5000).fadeOut('slow');


            }

        });

        }

    })

});


</script>

login.php

<?php
    error_reporting(0); 
?>
<?php ob_start(); ?>


<?php

/*
please I know how to use php Password hash and verify function(). so forget about that
*/
require('db.php');
$username = strip_tags($_POST['username']);
$password = strip_tags($_POST['password']);


$result = $db->prepare('SELECT * FROM users where username = :username and password = :password');

        $result->execute(array(
            ':username' => $username,
':password' => $password

    ));

$count = $result->rowCount();

$row = $result->fetch();


if( $count == 1 ) {



    echo "<div class='alert alert-success'>login sucessful</div>";
echo "<script>window.location='welcome.html'</script>";


}
else {

echo "<div class='alert alert-danger' id='alerts_img'><font color=red>Either Username or Password is Wrong</font></div>";
}


?>

<?php ob_end_flush(); ?>

добро пожаловать.html

<script>
if (localStorage.getItem("username") === null) {

alert('Requesting page directly is not allowed.');
window.location='index.html'
}
</script>

<script>

$(document).ready(function(){
    $('#payment').click(function(){

var username = localStorage.getItem("username");
var amount = $('#amount').val();


 if(amount==""){

            alert('please Enter amount');   

        }
else{
var datasend = "username="+ username + "&amount=" + amount;

        $.ajax({

            type:'POST',
            url:'payment.php',
            data:datasend,
                        crossDomain: true,
            cache:false,
            success:function(msg){

                alert('payment successful');


            }

        });

        }

    })

});


</script>


<input type="text" id="amount">
<button id="payment">Pay Now</button>

Может кто-нибудь помочь мне объяснить и исправить дыры в безопасности, где это необходимо.Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...