log4net войти в базу данных ... открыть для инъекций sql - PullRequest
4 голосов
/ 21 февраля 2011

Есть ли общепринятый способ использования поставщика ad4 log4net и защиты от внедрения SQL? Я могу делать свои собственные методы очистки, но это кажется мне рискованным.

Есть ли какая-то "DontLetPeopleOwnMyDatabase" = истинная настройка?

наш текущий опасный конфиг:

<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
  <threshold value="ERROR"/>
  <bufferSize value="1"/>
  <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
  <connectionString value="server=myDBServer; uid=myuserName; pwd=myPassword; database=myDatabase"/>
  <commandText value="INSERT INTO errorlog([message], [ServerName], [ApplicationName]) VALUES(@message, 'myServer', 'myApp')" />
  <parameter>

    <parameterName value="@message"/>

    <dbType value="String"/>

    <size value="4000"/>

    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%message"/>
    </layout>

  </parameter>
</appender>

1 Ответ

4 голосов
/ 21 февраля 2011

Может быть, я ошибаюсь, но вы уже используете параметры, поэтому нет риска внедрения SQL. @message передается как отдельный параметр SQL log4net, а не через конкатенацию строк.

Но если вы так боитесь внедрения SQL, как насчет с использованием хранимой процедуры ...?

Редактировать Не бойся больше, дорогой ОП. Вот недостающее доказательство того, что механизм ведения журнала log4net безопасен от внедрения SQL:

Записи записываются в базу данных с использованием подготовленного оператора или хранимой процедуры. Для свойства CommandType установлено значение Text (System.Data.CommandType.Text), чтобы указать подготовленный оператор, или StoredProcedure (System.Data.CommandType.StoredProcedure), чтобы указать хранимую процедуру.

Итак, подготовлено -> предварительно скомпилировано -> безопасное присвоение параметров.

Если вам нужна дополнительная информация, вы можете найти ее здесь .

...