Переменная хранения Javascript - PullRequest
       0

Переменная хранения Javascript

0 голосов
/ 24 февраля 2011

Я хочу сохранить некоторую переменную на стороне клиента, в настоящее время у меня мало выбора (переменная javascript, cookie, сессия), потому что я хочу уменьшить нагрузку на сервер, поэтому входящий параметр не будет проверяться на сервере сторона.

Например,

Клиентская сторона

<div id="showmoney"></div>

<script>
var money=10000;

$('#showmoney').html(money);

function changemoney()
{

{ pass the variable 'money' by ajax to php...}

}
</script>

PHP сторона

<?

$money = $_POST['money'];

$sql = "UPDATE user_details SET money = ".$money." WHERE uid = 123";
{ do query...}

?>

Есть ли способ сделать его более безопасным, потому что я боюсь, что кто-то может изменить переменную javascript с помощью инструментов (firebug? Если да, то как?)

большое спасибо ~:)

Ответы [ 6 ]

2 голосов
/ 24 февраля 2011

Люди могут делать со страницей все что угодно.

В отладчике Google Chrome (доступ с помощью Ctrl + Shif + J) они могут делать в консоли следующее:

money = 10000000000000; //Or whatever arbitrary value they choose
changemoney();

Как уже говорили другие люди, никогда не доверяйте ничему, что люди передают на сервер от клиента. Сервер должен проверить работоспособность.

2 голосов
/ 24 февраля 2011

Все, что вы храните в клиенте (браузере), можно манипулировать. Решение вашей проблемы - убедиться, что информация, отправленная обратно на сервер, не была подделана.

2 голосов
/ 24 февраля 2011

Есть ли какой-нибудь способ сделать его более безопасным, потому что я боюсь, что кто-то может изменить переменную javascript с помощью инструментов (firebug? Если да, то как?)входящие данные от клиента.Это всегда можно манипулировать.Необходимые проверки, такие как цены, которые вам нужно сделать на стороне сервера - проверка на стороне клиента предназначена только для удобства пользователя.

Кроме того, в показанном вами коде есть уязвимость SQL-инъекция , с которой вам следует разобраться.

2 голосов
/ 24 февраля 2011

Каждая переменная, которую вы не хотите изменять пользователем (например, ценник), ДОЛЖНА храниться на сервере, а не на клиенте. Существует множество способов изменить то, что клиент отправляет вам, и FireBug - просто самый простой инструмент. Более сложные инструменты позволят перехватывать и редактировать каждый HTTP-запрос.

1 голос
/ 24 февраля 2011

вы знаете о хранилище базы данных на стороне клиента - совершенно новый API в HTML5. пытаясь найти решение с ними. может быть полезно сохранить некоторые данные на стороне клиента.

1 голос
/ 24 февраля 2011

Вы должны согласовать свое желание хранить что-то на клиенте для повышения производительности с потребностью в безопасности. Чувствительная информация должна быть только на сервере. Любой опытный веб-пользователь может настроить JavaScript. Сохраните пропускную способность, разместив другую, менее конфиденциальную информацию на клиенте.

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