Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
SQL injection. Как защититься?
|
|||
|---|---|---|---|
|
#18+
Мой сайт был атакован какими-то уродами. Похоже на SQL injection. Как защититься? Код следующий (ин-лайн код используется только на главной странице): Sub Page_Load(sender As Object, e As EventArgs) Dim strconn1 As New OleDbConnection strconn1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.mappath("db11.mdb") & ";" Dim strSelect as String = "select top 5 * from salelive ORDER BY ProductID DESC" Dim comm As New OLEDBCommand(strSelect, strconn1) strconn1.Open() DataGrid1.DataSource = comm.ExecuteReader(CommandBehavior.CloseConnection) DataGrid1.DataBind() strconn1.Close() GC.Collect() End Sub Sub RadioButtonList1_Changed(sender As Object, e As EventArgs) If RadioButtonList1.SelectedItem.Value = "expensive" Then Dim strSelect as String = "SELECT TOP 5 * FROM salelive ORDER BY Price DESC" Dim strconn1 As New OleDbConnection strconn1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.mappath("db11.mdb") & ";" Dim comm As New OleDbCommand(strSelect, strconn1) strconn1.Open() DataGrid1.DataSource = comm.ExecuteReader(CommandBehavior.CloseConnection) DataGrid1.DataBind() strconn1.Close() ElseIf RadioButtonList1.SelectedItem.Value = "cheap" Then 'Dim strSelect as String = "SELECT ProductID, Form, City, Bedrooms, Floors, Size, Price, Pic, Type FROM salelive WHERE (Price < '50000' AND Price > '20000') ORDER BY ProductID" Dim strSelect as String = "SELECT * FROM salelive WHERE (Price < 50000 AND Price > 20000) ORDER BY ProductID" Dim strconn1 As New OleDbConnection strconn1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.mappath("db11.mdb") & ";" Dim comm As New OleDbCommand(strSelect, strconn1) strconn1.Open() DataGrid1.DataSource = comm.ExecuteReader(CommandBehavior.CloseConnection) DataGrid1.DataBind() strconn1.Close() ElseIf RadioButtonList1.SelectedItem.Value = "last" Then Dim strSelect as String = "select top 5 * from salelive ORDER BY ProductID DESC" Dim strconn1 As New OleDbConnection strconn1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & server.mappath("db11.mdb") & ";" Dim comm As New OleDbCommand(strSelect, strconn1) strconn1.Open() DataGrid1.DataSource = comm.ExecuteReader(CommandBehavior.CloseConnection) DataGrid1.DataBind() strconn1.Close() End If GC.Collect() End Sub Удача улыбается подготовленным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2006, 06:53 |
|
||
|
SQL injection. Как защититься?
|
|||
|---|---|---|---|
|
#18+
Используй хранимые процедуры... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2006, 07:35 |
|
||
|
SQL injection. Как защититься?
|
|||
|---|---|---|---|
|
#18+
Используй хранимые процедуры... Спасибо, попробую переписать. Есть еще варианты? Удача улыбается подготовленным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2006, 07:52 |
|
||
|
SQL injection. Как защититься?
|
|||
|---|---|---|---|
|
#18+
Не спец в данном вопросе, но тут по моему некуда injection делать, ведь от юзера никакие данные в SQL запрос не попадают. Может в чем-то другом причина? А вообще конечно лучше всегда использовать хранимые процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2006, 08:18 |
|
||
|
SQL injection. Как защититься?
|
|||
|---|---|---|---|
|
#18+
Данный код не имеет SQL Injection уязвимостей так как запросы не зависят от параметров принимаемых от пользователя. Возможно тебя поломали через уязвимости ОС. Убедись что у тебя установлен последний сервис-пак и все обновления. Хранимые процедуры в данном случае ничего особого не дадут. Тем более, что у тебя база Access которая их не поддерживает. Обрати внимание, что раз твоя база лежит в каталогах веб-сервера ее можно скачать прямым веб-запросом вида http://сайт/db11.mdb. Мне это сделать получилось. Советую переместить mdb файл каталог который недоступен для запросов по http. И пара советов по коду. 1) Нет нужды формировать каждый раз строку соединения. Это можно сделать один раз или вообше хранить в виде константы. 2) Не надо явно вызывать сборщик мусора (GC.Collect). Система сама разберется когда этим заниматься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2006, 18:07 |
|
||
|
SQL injection. Как защититься?
|
|||
|---|---|---|---|
|
#18+
Данный код не имеет SQL Injection уязвимостей так как запросы не зависят от параметров принимаемых от пользователя. Возможно тебя поломали через уязвимости ОС. Убедись что у тебя установлен последний сервис-пак и все обновления. Хранимые процедуры в данном случае ничего особого не дадут. Тем более, что у тебя база Access которая их не поддерживает. Обрати внимание, что раз твоя база лежит в каталогах веб-сервера ее можно скачать прямым веб-запросом вида http://сайт/db11.mdb. Мне это сделать получилось. Советую переместить mdb файл каталог который недоступен для запросов по http. И пара советов по коду. 1) Нет нужды формировать каждый раз строку соединения. Это можно сделать один раз или вообше хранить в виде константы. 2) Не надо явно вызывать сборщик мусора (GC.Collect). Система сама разберется когда этим заниматься. Спасибо за дельные советы, действительно толковые подсказки. Этот код писался довольно давно. Сейчас строки соединения храню в веб.конфиг. Насчет переместить базу - попробую, идея хорошая. Насчет сборшика понял. Спасибо еще раз. Удача улыбается подготовленным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 05:16 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=34165782&tid=1387138]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
38ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 312ms |

| 0 / 0 |
