Параметрированный запрос И проверка ввода - это путь. Существует множество сценариев, в которых может произойти SQL-инъекция, хотя используется mysql_real_escape_string()
.
Эти примеры уязвимы для SQL-инъекции:
$offset = isset($_GET['o']) ? $_GET['o'] : 0;
$offset = mysql_real_escape_string($offset);
RunQuery("SELECT userid, username FROM sql_injection_test LIMIT $offset, 10");
или
$order = isset($_GET['o']) ? $_GET['o'] : 'userid';
$order = mysql_real_escape_string($order);
RunQuery("SELECT userid, username FROM sql_injection_test ORDER BY `$order`");
В обоих случаях вы не можете использовать '
для защиты инкапсуляции.
Источник : Непредвиденная инъекция SQL (при эвакуации Недостаточно)
Лучший источник, который я имею для этого вида вопроса, является этой страницей: http://www.quirksmode.org/js/keys.html
, Что они говорят, - то, что коды клавиши нечетны на Safari, и еще последовательны везде (за исключением того, что нет никакого события нажатия клавиши на IE, но я верю работам keydown).
Я не уверен, возможно ли прерывание функциональных клавиш, но я избегал бы использования функциональных клавиш все вместе. Функциональные клавиши используются браузерами для выполнения множества задач, некоторые из них довольно распространенный. Например, в Firefox на Linux, по крайней мере шесть или семь из функциональных клавиш резервируются для использования браузером:
худшая часть - то, что различные браузеры в различных операционных системах используют различные ключи для разных вещей. Это - много различий для составления. Необходимо придерживаться более безопасный, реже используемые сочетания клавиш.