Как вы читаете php сессию в HTML, используя JavaScript?

0

Прежде всего, я разрабатываю мобильное приложение, использующее phonegap/cordova, поэтому я и ищу этот маршрут.

Я задаюсь вопросом, возможно ли получить статус сеанса от php в javascript, поскольку я ищу для защиты всего моего приложения только для пользователей.

Php я имею следующее:

<?php

$dbhost = '';
$dbuser = '';
$dbpass = '';
$db = '';
$tbl_name=""; 

$conn = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($db);

$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
$encrypt_password=md5($mypassword);

$myusername = stripslashes($myusername);
$mypassword = stripslashes($encrypt_password);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($encrypt_password);
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and password='$mypassword'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count==1){

    session_register("myusername");
    session_register("mypassword");
    session_start();
    $_SESSION["Login"] = "YES";
    header("location:login_success.html");
    echo $_SESSION['data'];
}
else {
    session_start();
    $_SESSION["Login"] = "NO";
    echo $_SESSION['data'];
}

?>

и html файл содержит следующий javascript

<script>$.get('checklogin.php', function(data) {
                if (data != "YES"){
                        window.location.replace("http://aam.prettypottery.ie/index.html");
                                    }
        });</script>

Я думаю, что я близок, только каждый раз, когда я пытаюсь посмотреть любую из моих html-страниц, они все отправляют меня обратно в index.html.

Любая помощь будет большой. благодаря

  • 0
    Как упоминает PID, это не будет очень безопасной техникой. Например, я мог бы просто отключить JavaScript или запустить свой собственный сценарий, чтобы обойти ваш. Это проверка на стороне клиента .. никогда не доверяй клиенту
Теги:
cordova

1 ответ

2

Да, похоже, вы близки. Но наоборот.

Если безопасность важна для вас, вы должны принять во внимание это:

  • это не обязанность браузера решать, разрешен ли пользователь и доступна ли страница;
  • сервер должен перенаправлять, если доступ к зарезервированной странице осуществляется с недостаточной афоризацией (не вошел в систему);
  • $.get('checklogin.php', function(data) { не должно быть вообще, это должно быть сделано на стороне сервера (в PHP);
  • ваш запрос $sql="SELECT * FROM $tbl_name WHERE... по-прежнему уязвим, по крайней мере, использует PDO;
  • пароли хэшируются (не зашифрованы) с MD5 которые могут быть достаточными для вашего сайта, но обычно используют соление и более сильные хеши (по крайней мере SHA1);
  • не просто проверяйте количество результатов, но фактически получаете некоторую информацию из БД и используете ее для аутентификации.

Что-то вроде этого:

SELECT username FROM accounts WHERE ...

и это:

$authenticated = strcasecmp($username, $resulting_username) === 0;

Чтобы решить вашу проблему прямо сейчас, вам нужно будет отобразить на PHP как минимум переменную, которая сообщает Javascript-код для перенаправления. Что-то вроде этого.

В HTML/PHP:

<script>
  if (<?php echo ($authenticated ? 'true' : 'false'); ?>)
  {
    alert("Good boy!");
  } else {
    alert("Bad Trudy is bad!");
  }
</script>

Создание этого результата HTML:

<script>
  if (true)
  {
    alert("Good boy!");
  } else {
    alert("Bad Trudy is bad!");
  }
</script>

Достаточно деактивировать Javascript, и страница не будет реагировать вообще на этот код и отображать его содержимое без каких-либо препятствий.

Ссылки:

  • 0
    Я, конечно, рассмотрю вопросы безопасности более подробно, но на данный момент, работая с Phonegap, как еще вы предложите, чтобы я защищал свои страницы только для пользователей после их регистрации / входа в систему?
  • 0
    Я добавил еще несколько объяснений о том, как визуализировать переменную PHP внутри вашего JS-кода, чтобы вы могли реагировать на стороне клиента. Тем не менее, это заставляет щенков плакать :)
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню