Прежде всего, не используйте ESAPI для предотвращения SQL-инъекций. Цель разработки всех существующих кодеков кодирования SQL состояла в том, чтобы обеспечить экстренную меру в случае взлома веб-сайта, и вам нужно что-то быстрое и грязное на месте, пока вы переписываете все свои запросы для использования Подготовленные заявления.
Вот выдержка из документации по OracleCodec:
/**
* Implementation of the Codec interface for Oracle strings. This function will only protect you from SQLi in the case of user data
* bring placed within an Oracle quoted string such as:
*
* select * from table where user_name=' USERDATA ';
Не обращайте внимания на следующие слова из руководства по Sybase:
Не подготавливайте операторы, которые используются только один раз
Используйте подготовленные операторы или хранимые процедуры для всех транзакций базы данных. За почти десятилетие разработки я ни разу не видел реальной потери производительности из-за использования подготовленных операторов. В большинстве языков производительность улучшается. Это, безусловно, относится к Java.
Вот как выглядит подготовленный отчет:
[2019 EDIT] Приведенный ниже код технически может быть самим SQLi, когда я писал это, я хотел указать, что параметр dbName
безопасно использовать таким образом только когда сервер полностью контролирует значение.[/2019]
String updateString =
"update " + dbName + ".COFFEES " +
"set SALES = ? where COF_NAME = ?";
updateSales = con.prepareStatement(updateString);
Вот еще.
В настоящее время ESAPI не предоставляет кодек Sybase, и в настоящее время нет планов по его разработке.
Источник: В настоящее время я являюсь соруководителем проекта ESAPI.
person
avgvstvs
schedule
20.03.2018