запрос Ajax jQuery, переставший работать в IE

Я использую три разных способа предотвращения уязвимости моего веб-приложения для SQL-инъекции.

  1. Использование mysql_real_escape_string(), которое является предопределенной функцией в PHP , и этот код добавляет обратную косую черту к следующим символам: \x00, \n, \r, \, ', " и \x1a. Передайте входные значения в качестве параметров, чтобы свести к минимуму вероятность внедрения SQL.
  2. Самый продвинутый способ - использовать PDO.

Надеюсь, это поможет вам.

Рассмотрим следующий запрос:

$iId = mysql_real_escape_string("1 OR 1=1"); $sSql = "SELECT * FROM table WHERE id = $iId";

mysql_real_escape_string () здесь не защитит. Если вы используете одиночные кавычки ('') вокруг ваших переменных внутри вашего запроса, это то, что защищает вас от этого. Ниже приведено ниже решение:

$iId = (int) mysql_real_escape_string("1 OR 1=1"); $sSql = "SELECT * FROM table WHERE id = $iId";

В этом вопросе есть хорошие ответы.

Я предлагаю , наилучшим вариантом является использование PDO.

Изменить:

mysql_real_escape_string() устарел с PHP 5.5.0. Используйте либо mysqli, либо PDO.

Альтернативой mysql_real_escape_string () является

string mysqli_real_escape_string ( mysqli $link , string $escapestr )

Пример:

$iId = $mysqli->real_escape_string("1 OR 1=1");
$mysqli->query("SELECT * FROM table WHERE id = $iId");

38
задан informatik01 22 October 2013 в 11:29
поделиться

7 ответов

Исправлено, я изменил тип содержимого с application / json; charset = utf8 для простого application / json .
Я ненавижу IE :)

Также, чтобы избежать суперкэширования IE, попробуйте следующее:

var d = new Date();
$.ajax({
        url:"{{SITE_URL}}/content/twitter.json?_="+d.getTime(), 
...Snip...

Таким образом, каждый запрос представляет собой новый URL-адрес, который IE может получить: D

51
ответ дан 27 November 2019 в 03:06
поделиться

Для кэширующейся проблемы, почему не делают Вас простое использование cache: false параметр?

$.ajax({ 
    url: "yoururl",
    cache: false,
    ....
48
ответ дан tanathos 27 November 2019 в 03:06
поделиться

действительно ли это скопировать/вставить? одна вещь, которая получает меня все время, оставляет последнее'', в конструкторе Object. то есть, большинство браузеров JS принимает:

o = { a:1, b:2, c:3, };

, но IE дросселирует на этом потому что запятая после последнего объекта. измените его на:

o = { a:1, b:2, c:3 };

и это работает.

8
ответ дан Javier 27 November 2019 в 03:06
поделиться

Ajax кэшей IE запрашивает действительно настойчиво (больше, чем Firefox, так или иначе). Необходимо установить заголовки Управления Кэша в ответе соответственно, если это не правильно для сайта.

3
ответ дан Craig Stuntz 27 November 2019 в 03:06
поделиться

Одной основной проблемой со статически сгенерированным JSON и IE являются ведущие "запятые" для примеров, это бросает ошибку в IE:

{
    "one":"hello",
    "two":"hi",
 }

Примечание последняя запятая.

2
ответ дан Luca Matteis 27 November 2019 в 03:06
поделиться

Что {{SITE_URL}}, блок, дающий, о. Попытайтесь смотреть на код в поле зрения исходный код браузера. Если бы {{САЙТ _URL}} блок имеет запаздывающую наклонную черту, и это сделало бы URL запроса:

http://modomain.com//content/twitter.json

, Который мог вползти IE?

0
ответ дан Pim Jager 27 November 2019 в 03:06
поделиться

IE: JSON not defined error решено на

http://funkatron.com/site/comments/safely-parsing-json-in-javascript/

с помощью dataType: "json" и избегания синтаксического анализа

0
ответ дан 27 November 2019 в 03:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: