используйте проблему кодирования символов, чтобы обойти инъекцию SQL mysql_real_escape_string ()
Хотя функция mysql_real_escape_string ()
предотвращает инъекцию SQL, она может быть обошщена в некоторых случаях.
рассмотрим следующий код PHP:
]$login = mysql_real_escape_string(GetFromPost('login'));
$password = mysql_real_escape_string(GetFromPost('password'));
$sql = "SELECT * FROM table WHERE login='$login' AND password='$password'";
]
Этот код кажется безопасным, но он может быть использован из -за края кодирования набора символов.
]Метод атаки:
атаки зависят от следующих шагов:
] клиент считает, что соединение использует другой набор символов (например, latin1), так что
mysql_real_escape_string () будет одиноким Вставьте обратную черту перед кавычками, что приводит к синтаксически допустимой строке. ]
задача ключа заключается в том, что набор символов, ожидаемый сервером, не соответствует набору символов, рассмотренному клиентом. Хотя mysql_real_escape_string () сбегается на основе кодирования соединения, установленного клиентом, в некоторых случаях он рассматривает недействительные мультибитные символы как один байт, включая использование
установить имена вместо ] mysql_set_charset ()
case. ]
в результате:
эта атака может обойти моделируемый оператор предварительной обработки PDO, даже если смоделированный оператор предварительной обработки отключен. ]
Средство:используйте не Vulnerable наборы символов, такие как UTF8MB4 или UTF8, чтобы смягчить эту проблему. Включение no_backslash_escapes SQL Mode также обеспечивает защиту. ]
безопасный пример:
всегда устанавливайте набор символов правильно, используя mysql_set_charset () или PDO DSN набора символов. Реальные заявления о предварительной обработке в MySqli также невосприимчивы к этой атаке.
]в заключение:
while mysql_real_escape_string () обычно обеспечивает сильную защиту, важно знать о таких потенциальных случаях, чтобы обеспечить полную защиту от инъекции SQL.
]Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3