Кодек Sybase для OSWAP ESAPI
Я использую базу данных Sybase.
Если я хочу использовать OWASP ESAPI для предотвращения SQL-инъекций
Какой кодек я должен использовать?
OracleCodec? MySQLCodec? DB2Codec? https://static.javadoc.io/org.owasp.esapi/esapi/2.0.1/org/owasp/esapi/codecs/package-summary.html
Спасибо!
1 ответ
Прежде всего, не используйте 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.
Вот как выглядит Подготовленное заявление:
String updateString =
"update " + dbName + ".COFFEES " +
"set SALES = ? where COF_NAME = ?";
updateSales = con.prepareStatement(updateString);
В настоящее время ESAPI не предоставляет кодек Sybase, и в настоящее время нет планов его разработки.
Источник: в настоящее время я являюсь со-руководителем проекта ESAPI.