У меня проблема, которую я не понимаю. Я хочу создать php-скрипт, который заполнит некоторые таблицы sql из Active Directory.SQL-инъекция из Active Directory
Вот часть моего кода: $result=ldap_list($connect, "OU=PROFS,".$base_dnref, "(ou=*)");
$res = ldap_get_entries($connect, $result);
for ($i=0; $i < $res["count"]; $i++) {
$result2=ldap_list($connect, "OU=".$res[$i]["ou"][0].",OU=PROFS,".$base_dnref, "(cn=*)");
$res2 = ldap_get_entries($connect, $result2);
for($j=0;$j<$res2["count"];$j++){
$insert=$db->query("INSERT INTO PROFESSEURS(NOM) VALUES ('".$res2[$j]["cn"][0]."')");
$insert->fetch();
}
}
$result=ldap_list($connect, "OU=ELEVES,".$base_dnref, "(ou=*)");
$res = ldap_get_entries($connect, $result);
for ($z=0; $z < $res["count"]; $z++) {
$insert=$db->query("INSERT INTO CLASSE(NUMERO) VALUES ('".strval($res[$z]["ou"][0])."')");
$insert->fetch();
$result2=ldap_list($connect, "OU=".$res[$z]["ou"][0].",OU=ELEVES,".$base_dnref, "(cn=*)");
$res2 = ldap_get_entries($connect, $result2);
for($y=0;$y<$res2["count"];$y++){
$insert=$db->query("INSERT INTO ELEVE(NOM) VALUES ('".$res2[$y]["cn"][0]."')");
$insert->fetch();
}
}
}
catch (PDOException $e) {
print 'Exception : ' . $e->getMessage();
}`
Дело в том, что первый двойной for
работает отлично, но второй не делает. Однако я использовал тот же синтаксис. Ошибка: «Исключение: SQLSTATE [HY000]: общая ошибка».
Дополнительно, запрос $insert=$db->query("INSERT INTO CLASSE(NUMERO) VALUES ('".strval($res[$z]["ou"][0])."')");
работает нормально, но только с половиной данных Active Directory, а другой нет. Я уверен, что проблема не связана с LDAP-контуром, для этого я использую LDAPExplorerTool.
Не могли бы вы помочь мне, пожалуйста?
На моем браузере, ваш скрипт сделать "Exception: SQLSTATE [HY000]: Общая ошибка". Только одна строка заполняется в базе данных идентификатором 163, я нахожу это довольно странным. – arkodath
Можете ли вы прокомментировать это: $ insert-> fetch(); Если это не требуется. Кроме того, я не сталкиваюсь с «Исключение: SQLSTATE [HY000]: общая ошибка» в моей системе. Дайте мне знать, если любые изменения. –
Я сделал, но при запуске скрипта появляется такая же ошибка, и заполняется только таблица PROFESSEURS. Даже если есть ошибка, код, который вы предлагаете, прежде чем заполнять таблицу CLASSE, я считаю это слишком случайным, я теряюсь ... – arkodath