Я использую три разных способа предотвращения уязвимости моего веб-приложения для SQL-инъекции.
mysql_real_escape_string()
, которое является предопределенной функцией в PHP , и этот код добавляет обратную косую черту к следующим символам: \x00
, \n
, \r
, \
, '
, "
и \x1a
. Передайте входные значения в качестве параметров, чтобы свести к минимуму вероятность внедрения SQL. Надеюсь, это поможет вам.
Рассмотрим следующий запрос:
$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");
Исправлено, я изменил тип содержимого с 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
Для кэширующейся проблемы, почему не делают Вас простое использование cache: false
параметр?
$.ajax({
url: "yoururl",
cache: false,
....
действительно ли это скопировать/вставить? одна вещь, которая получает меня все время, оставляет последнее'', в конструкторе Object. то есть, большинство браузеров JS принимает:
o = { a:1, b:2, c:3, };
, но IE дросселирует на этом потому что запятая после последнего объекта. измените его на:
o = { a:1, b:2, c:3 };
и это работает.
Ajax кэшей IE запрашивает действительно настойчиво (больше, чем Firefox, так или иначе). Необходимо установить заголовки Управления Кэша в ответе соответственно, если это не правильно для сайта.
Одной основной проблемой со статически сгенерированным JSON и IE являются ведущие "запятые" для примеров, это бросает ошибку в IE:
{
"one":"hello",
"two":"hi",
}
Примечание последняя запятая.
Что {{SITE_URL}}, блок, дающий, о. Попытайтесь смотреть на код в поле зрения исходный код браузера. Если бы {{САЙТ _URL}} блок имеет запаздывающую наклонную черту, и это сделало бы URL запроса:
http://modomain.com//content/twitter.json
, Который мог вползти IE?
IE: JSON not defined error решено на
http://funkatron.com/site/comments/safely-parsing-json-in-javascript/
с помощью dataType: "json" и избегания синтаксического анализа