Кодек 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.

Другие вопросы по тегам