Является ли этот код достаточным для защиты от атак SQL-инъекций и инъекций PHP-инъекций?Является ли этот код достаточным для защиты от атак SQL-инъекций и инъекций PHP-инъекций?
У меня есть эта функция в включаемый файл функций:
function strclean ($string) {
$outstr = '';
if (strlen ($string) > 0) {
$ix = 0;
$char = substr ($string, $ix, 1);
// strip leading spaces
while ($char == ' ') {
$ix = $ix + 1;
$char = substr ($string, $ix, 1);
}
// disarm naughty characters
while ($ix < strlen ($string)) {
$char = substr ($string, $ix, 1);
if ($char == '<') $char = '<';
else if ($char == '>') $char = '>';
else if ($char == '"') $char = '"';
else if ($char == '&') $char = '&';
else if ($char < chr(20)) $char = '';
$outstr = $outstr . $char;
$ix = $ix + 1;
}
// strip trailing spaces
while (substr ($outstr, strlen ($outstr) - 1, 1) == ' ' && strlen ($outstr) > 0) {
$outstr = substr ($outstr, 0, strlen ($outstr) - 1);
}
$outstr = mysql_real_escape_string ($outstr);
}
return $outstr;
}
Позже в моей странице, я различные строки возвращенного из формы ввода, такие как в этом примере:
$username = strclean ($_POST['username']);
$password = strclean ($_POST['password']);
И даже позже у меня есть следующий SQL:
$result = mysql_query ('SELECT * FROM users WHERE
username = "' . $username . '"', $dbconn) or die (mysql_error());
Я не ищу имя пользователя и пароль togeth er в запросе. Несколько строк после этого я проверить действительный пароль, как это:
if ($rowsfound == 1) {
$userrow = mysql_fetch_array ($result);
$userword = $userrow ["password"];
if ($userword == $password) {
// logon
}
else {
// incorrect password
}
}
else if ($rowsfound == 0) {
// unknown user
}
else {
// something strange happened! possible sql injection attack?
}
Почему вы пытаетесь сделать это самостоятельно, вместо того чтобы использовать функции в ядре PHP? –
Учитывая, что это долго и сложно читать, я бы сказал, что это не выполнимый подход. –
Возможный дубликат функции очистки Secure XSS (регулярно обновляется)] (http://stackoverflow.com/questions/6382442/secure-xss-cleaning-function-updated-regularly) –