2014-09-03 3 views
0

безопасно ли отправлять данные (текст) div на сервер через ajax? или получить URL-адрес тега <a> и использовать его?передавать данные с использованием значения div (безопасность)

ex.

<div id="get-value">Some Value</div> 
<button id="send" data-url="process.php"></button> 

Javascipt

$('#send').click(function() { 
    $.ajax({ 
     url: this.dataset.url, 
     dataType: 'json', 
     type: 'post', 
     data: { 
      value: $('#get-value').text(), 
     } 
    }); 
}); 

Что делать, если я редактировать текст в DIV и данных-URL кнопки в инструменты разработчика и нажмите кнопку после того, как?

ответ

2

Это является безопасным для этого.

При работе с Javascript и AJAX вы подвергаетесь этой неотъемлемой проблеме: его всегда можно изменить. Лучший способ свести к минимуму проблему - убедиться, что на клиенте не происходит никаких безопасных операций, а вместо этого Javascript может отображать и отправлять.

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

+0

Как насчет URL-адреса? – meetmahpuppy

+0

Используемый вами URL-адрес _absolutely fine_. Пока ваш URL-адрес не раскрывает важную информацию о вашей структуре каталогов (чего у вас нет), нет ничего плохого. –

+0

, то опять-таки URL-адрес данных может быть изменен в dev-tool, так что это значит, что данные будут отправлены на другой URL-адрес? – meetmahpuppy

0

По-моему, и я не эксперт по безопасности, но я так понимаю, что вы всегда должны проверять и дезинформировать ввод пользователя на стороне сервера. Если пользователь может отправлять данные, они могут вмешиваться в него, поэтому он небезопасен, пока вы его не очистите, и убедитесь, что он безопасен на сервере.

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

0

безопасно ли отправлять данные (текст) на сервер через ajax? или получить URL-адрес тега и использовать его?

Да.

Обратите внимание, что, поскольку он исходит из браузера, это пользовательский ввод и должен рассматриваться как таковой. Вы не можете предположить, что данные, которые вы предоставили браузеру, ожидая, что он будет отправлен обратно на сервер, не будут подделаны.

Не используйте такие вещи, как авторизация. Вы не можете доверять браузеру, чтобы сообщить вам, является ли пользователь администратором или нет. Необходимо иметь правильную проверку подлинности, а затем выполнить авторизацию для пользователя на сервере.

Не используйте его без подходящего экранирования для этой цели. например Не вставляйте его в SQL без использования связанного аргумента. Не вставляйте его в HTML без преобразования специальных символов в объекты (или с помощью парсера HTML с фильтром белого списка для очистки рисков XSS).