Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/16: Рейтинг темы: голосов - 16, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 12.04.2011
Сообщений: 287

Правильное оформление запроса

17.08.2011, 22:56. Показов 3432. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем.
Интересует следующий вопрос :
как грамотно оформить запрос, чтобы не возможно было использовать SQL Injection ?

Имеется следующий код :
C#
1
2
var sql = ('SELECT adminName, adminPassword FROM tblAdmins WHERE (adminName=''+UserID+'') and (adminPassword=''+UserPWD+'')');
var rs = connAL.Execute(sql);
Значения UserID и UserPWD вводит пользователь и они посылаются из формы.

Эта запись не спасает от SQL Injection, потому как если написать в строке ввода ' or 'a' = 'a то все грузится (а не должно бы).

Помогите пожалуйста разобраться с этим.

Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.08.2011, 22:56
Ответы с готовыми решениями:

Правильное оформление Dcount
Добрый день форумчане, подскажите пожалуйста, как правильно оформить текст в условии dcount. ...

Правильное построение запроса джойн
Плиз хелп ми! я разрабатываю приложение на C#, база данных access Есть таблица t1 и три классификатора t2 t3 t4 из таблицы t1...

Правильное оформление
Как правильно оформить данный слайдер, учитывая что там должно быть 12 блоков, из которых 4 показывают?(без скрипта) чтобы никто не...

12
0 / 0 / 0
Регистрация: 14.11.2010
Сообщений: 67
18.08.2011, 01:24
объект Command с параметрами спасет
0
0 / 0 / 0
Регистрация: 12.04.2011
Сообщений: 287
18.08.2011, 05:28  [ТС]
А можно подробнее : какие команды использовать и какие параметры ? И если можно с примерами - хотя бы на моей задаче.

Спасибо.

Можно еще дать ссылочки на эту тему.
0
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
18.08.2011, 12:44
Изучи этот пример на VBScript.
Ключевые моменты:
- Вместо значения параметра в запрос подставляется вопросительный знак
- Значения параметров надо указывать в том же порядке в котором они идут в запросе
Данный пример верен только для текстовых запросов. При вызове хранимых процедур используются именованные параметры.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Const adCmdText = 1
Const adCmdStoredProc = 4
Const adVarChar = 200
Const adParamInput = 1
'
Dim objConn, objCmd, objRS, objParam, sqlQuery
'
sqlQuery = 'SELECT adminName, adminPassword FROM tblAdmins WHERE adminName=? AND adminPassword=?'
'
Set objConn = Server.CreateObject('ADODB.Connection')
objConn.ConnectionString = '...'
objConn.Open
'
Set objCmd = Server.CreateObject('ADODB.Command')
objCmd.CommandType = adCmdText
objCmd.CommandText = sqlQuery
Set objCmd.ActiveConnection = objConn
'
objCmd.Parameters(0) = UserID
objCmd.Parameters(1) = UserPWD
'
Set objRS = objCmd.Execute
If Not objRS.EOF Then
    Response.Write objRS('firm_ID')
End If
objRS.Close
0
0 / 0 / 0
Регистрация: 12.04.2011
Сообщений: 287
18.08.2011, 18:49  [ТС]
Привет.
Пример изучил. Переделал его под JS, но он не работает.
Вот что получилось :
JavaScript
1
2
3
4
5
6
7
8
9
10
11
adCmdText = 1;
adCmdStoredProc = 4;
adVarChar = 200;
adParamInput = 1;
var sql = ('SELECT adName, adPd FROM tblAd WHERE adName=? and adPd=?');
connC.CommandType = adCmdText;
connC.CommandText = sql;
connC.ActiveConnection = connAL;
connC.Parameters(0) = UserID;
connC.Parameters(1) = UserPWD;
var rs = connC.Execute;
где
JavaScript
1
2
3
4
var connAL = Server.CreateObject('ADODB.Connection');
connAL.Open(Application('DBConnStrAL'));
.....
var connC = Server.CreateObject('ADODB.Command');
Вылетает ошибка :
Технические сведения (для сотрудников службы поддержки)
Тип ошибки:
Microsoft JET Database Engine (0x80040E10)
Параметр ?_1 не имеет значения по умолчанию.
/www/scr/security.inc, line 43
Где line 43 - var rs = connC.Execute;

Что это обозначает ? Как я понимаю изначально параметры UserID и UserPWD - пустые, может из-за этого ошибка ?

И еще вопрос : зачем нужны
adCmdStoredProc = 4;
adVarChar = 200;
adParamInput = 1; ? Мы их нигде не используем, зачем они ?
0
0 / 0 / 0
Регистрация: 12.04.2011
Сообщений: 287
18.08.2011, 19:21  [ТС]
Все отбой.
Разобрался : нужно было поставить еще проверку на undefined - UserID, вот так вот :
Вместо
JavaScript
1
2
3
4
if(UserID ==0 || UserID==null || UserID=='')
 {
   ....
 }
написал
JavaScript
1
2
3
4
if(UserID ==0 || UserID==null || UserID=='' || UserID+''=='undefined')
 {
   ....
 }
Оно и понятно изначально UserID и UserPWD не определены, наверное поэтому и выскакивала ошибка.

Василий, только вот непонятно все таки зачем нужны :

adCmdStoredProc = 4;
adVarChar = 200;
adParamInput = 1; ?
0
0 / 0 / 0
Регистрация: 12.04.2011
Сообщений: 287
18.08.2011, 19:32  [ТС]
И еще такой вопрос :
как сделать таймаут по времени с Session или по-другому - хотя бы как на этом сайте (когда создаешь новую тему - вводишь имя и пароль, а по истечении некоторого времени - простоя - нужно опять вводить имя и пароль).

Thnx - Best regards to bazile
0
0 / 0 / 0
Регистрация: 12.04.2011
Сообщений: 287
22.08.2011, 02:39  [ТС]
Подскажите плиз кто-нибудь.
0
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
22.08.2011, 11:48
> только вот непонятно все таки зачем нужны :
> adCmdStoredProc = 4;
> adVarChar = 200;
> adParamInput = 1; ?
Не нужны они. Забыл убрать их из примера.

> как сделать таймаут по времени с Session или по-другому -
> хотя бы как на этом сайте (когда создаешь новую тему - вводишь
> имя и пароль, а по истечении некоторого времени - простоя -
> нужно опять вводить имя и пароль).
Ты сам себе и ответил. Страница авторизации заносит в сессию признак прошел ли посетитель авторизацию. Когда сессия истечет потребуется снова вводить логин и пароль
0
0 / 0 / 0
Регистрация: 12.04.2011
Сообщений: 287
27.08.2011, 02:39  [ТС]
А где прописывается время ссессии ? Или как его задать ?
0
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
28.08.2011, 10:41
В настройках IIS. Свойства сайта - закладка Home Directory - кнопка 'Configuration' - закладка 'Options'
0
0 / 0 / 0
Регистрация: 12.04.2011
Сообщений: 287
31.08.2011, 13:07  [ТС]
А програмно можно это как-то сделать ?
0
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,903
31.08.2011, 13:10
Session.Timeout = КоличествоМинут
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.08.2011, 13:10
Помогаю со студенческими работами здесь

Правильное оформление проекта
Решил выучить Xamarin.Forms. Подскажите, как правильно оформлять проект. Знаю, что в C++ нужен для каждого класса отдельный хедер и cpp...

Правильное оформление кода
Возникло несколько вопросов по оформлению 1. Важны ли комментарии к коду? 2. Предположим, есть у меня три класса. Выполняют разную...

Правильное оформление конфига
Здравствуйте, есть сервер с apache2, на нём примерно 20 поддоменов, оформленных следующим образом: <VirtualHost *:80> ...

Правильное оформление друж-х ф-й
Добрый вечер! Компилятор ругается на то, что друж-я ф-ция использует private - поля класса. Попробовал положить определение в StdAfx.h, а...

Правильное оформление заголовка тегом H1
Ниже у меня распаложены 2 вида обрамления загаловка тегом H1, какой вид обрамления загаловка тегом H1 предпочтительнее использовать для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru