powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP+MsSQL = иньекция
25 сообщений из 40, страница 1 из 2
ASP+MsSQL = иньекция
    #32928663
SKoS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос такой... есть сайт, на ASP, писал не я взял готовый... он работает с MsSQL, на сайте есть регистрация, и разная статистика, которая берется из MsSQL 2000.
проблема в том что недоброжелатели путем вписания в адрестную строку браузера, делают SQL иньекции, перезаписывают базу.
В АСП я неселен, я так понимаю что надо сделать проверку или запретна определенные знаки в строке...
Что именно и куда писать, или может есть еще способ предотвратить это?
Спасибо
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #32928750
RFT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #32928941
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторнедоброжелатели путем вписания в адрестную строку браузера , делают SQL иньекции, перезаписывают базу.
Круто устроено!!!
Посоветовать чтоли этим добрым людям drop database написать

Вообще нужно запретить ввод каких-либо команд sql откуда-то ни было. Что за бред - руки бы и голову оторвать у того программиста, который так сделал.

-- Tygra's --
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #32928958
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ах вон оно как!!! Я то думал, это фича сайта, а это во как оно оказывается!!!

Ну тада приношу извинения.

В Тынце до фига чего написано, действительно.
Что в итоге - проверять на недопустимые символы в данных, которые указывает клиент. Это ', &, = , or, and, и т.д.


-- Tygra's --
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #32928967
Bagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А использование ХП не поможет?
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #32929076
SKoS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
) а где советы? или примеры )?
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #32930097
SKoS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
) или не кто не хочит помогать ) , или проблема нерешена эта...
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #32930796
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я же написал -там, где производится обращение к sql-серверу, перед этим проверяй все введенные данные (они лежат в переменных, которые подставляются в sql, посмотри в коде) на недопустимые символы.

-- Tygra's --
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #32935077
prog_kaptur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SKoS) или не кто не хочит помогать ) , или проблема нерешена эта...
если хочешь, пришли этот софт на мой маил со SQL скриптами для базы данных, я посмотрю, может что-то посоветую ... или поправлю. А так - это как "гадать на кофейной гуще".
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #32936687
SKoS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
prog_kaptur SKoS) или не кто не хочит помогать ) , или проблема нерешена эта...
если хочешь, пришли этот софт на мой маил со SQL скриптами для базы данных, я посмотрю, может что-то посоветую ... или поправлю. А так - это как "гадать на кофейной гуще".

маил что то не нахожу, куда отправить...
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #32936844
Bagin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В некоторых случаях может помочь ХП, например:
Код: plaintext
1.
2.
3.
4.
5.
CREATE PROCEDURE Template 
@Id INT 
AS 
SET NOCOUNT ON
SELECT * FROM Template WHERE Template.Id=@Id
GO
Если ей передать в качестве параметра значение, отличное от INT (например, строку с деструктивным кодом), то ХП будет ругаться и не выполниться.
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #32937065
VladiCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то самая правильная защита от инъекций - это использование запросов с параметрами - то есть не самому проверять корректность отсылаемой строки на SQL-сервер, а переложить эту заботу на драйвер СУБД.
в ASP.NET - это SqlParameter, в ASP - тоже есть что-то аналогичное, сейчас уже точно не помню.
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #32937462
SKoS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот к примеру скрипт смены пароля...

<!--#include file="config.asp" -->
<%
on error resume next
if request.form("username")<>"" then
ps_loginname=request.form("username")
ps_oldpsd=request.form("oldpsd")
ps_psd1=request.form("psd1")
ps_psd2=request.form("psd2")
if instr(ps_loginname,"'")<>0 or instr(ps_loginname,"=")<>0 or instr(ps_loginname,"&")<>0 or instr(ps_loginname,"%")<>0 then
response.write "Ne pravelnyj login"
response.end
end if
if ps_loginname="" or ps_oldpsd="" or ps_psd1="" or ps_psd2="" then
response.write "<script language=javascript>alert('Заполните все поля');history.back();</script>"
response.end
end if
if ps_psd1<>ps_psd2 then
response.write "<script language=javascript>alert('Не правельный пароль');history.back();</script>"
response.end
end if
set rs1 = Server.CreateObject("ADODB.Recordset")
sql="select * from MEMB_INFO where memb___id = '"&ps_loginname&"'"
rs1.open sql,conn,1,3
chg=0
if not rs1.eof then
if ps_oldpsd=rs1("memb__pwd") then
rs1("memb__pwd")=ps_psd1
rs1.update
chg=1
else
chg=2
end if
else
chg=3
end if
if chg=1 then response.write "<script language=javascript>alert('Пароль изменен!');location.href='home.asp';</script>"
if chg=2 then response.write "<script language=javascript>alert('Не правельный старый пароль');history.back();</script>"
if chg=3 then response.write "<script language=javascript>alert('Не правельный акаунт');history.back();</script>"
rs1.close
set rs1=nothing
conn.close
set conn=nothing
response.end
else
%>
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
ASP+MsSQL = иньекция
    #38564589
lenash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я тоже не могу защититься от sql-инъекций. Подскажите, пожалуйста.
Сайт на ASP, база MSSQL
<%
x=Request.QueryString
Set conx = Server.CreateObject("ADODB.Connection")
conx.Open "DSN=myDSN"

SQL = "SELECT ID, date, modified, guid FROM posts WHERE post_status = 'publish' and id=" & x
Set rs = Server.CreateObject("ADODB.Recordset")
Set rs = conx.Execute(SQLTITL)
%>

Как все таки проверять корректность отсылаемой строки на SQL-сервер? Как запретить ввод каких-либо команд sql ?
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #38564592
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lenashЯ тоже не могу защититься от sql-инъекцийиспользуйте параметры
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #38564614
lenash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что нужно использовать параметры, я прочитала в интернете. Я не знаю как?
Что значит использовать параметры. Можно пример?
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #38564622
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #38565951
lenash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
делаю вот так:

<%
dim sql, cn, cmd, x
Set conx = Server.CreateObject("ADODB.Connection")
conx.Open "DSN=myDSN"

sql = "SELECT xxx, yyy FROM table WHERE id= :p_id"
set cmdx = Server.CreateObject("ADODB.Command")
set rs = Server.CreateObject("ADODB.Recordset")

with cmdx
.ActiveConnection = conx
.CommandText = sql
.CommandType = adCmdText
.Parameters.Append.CreateParameter("@p_id", adNumeric, adParamInput, , x)
end with
set rs = cmdx.execute
%>

и вот такая ошибка
Ошибка компиляции Microsoft VBScript ошибка '800a0414'

Недопустимо использование скобок при вызове процедуры Sub на строке .Parameters.Append.CreateParameter("@p_id", adNumeric, adParamInput, , x)

Подскажите, пожалуйста, почему, что не так?
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #38565975
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
перечитайте пример по моей ссылке еще раз
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #38566009
lenash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не понимаю в чем ошибка, подскажите, пожалуйста.
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #38566012
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
предполагаю, что проблема в недопустимом использовании скобок
посмотрите на пример по моей ссылке
обратите внимание как там используются скобки
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #38566026
lenash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Именно как там я пробовала, тогда ошибка вот такая - Аргументы имеют неверный тип, выходят за пределы допустимого диапозона или вступают в конфликт друг с другом.

Но все ведь по синтаксису.
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #38566031
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
показывайте как пробовали
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #38566060
lenash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
<%
dim sql, cn, cmdx, x
Set conx = Server.CreateObject("ADODB.Connection")
conx.Open "DSN=myDSN"


sql = "SELECT xxx,yyy FROM table WHERE id= :p_id"

set cmdx = Server.CreateObject("ADODB.Command")
Set rs = Server.CreateObject("ADODB.Recordset")

cmdx.ActiveConnection = conx
cmdx.CommandText = SQLTITL
cmdx.Parameters.Append(cmdx.CreateParameter("@p_id", adNumeric, adParamInput, , x))

set rs = cmdx.execute
%>
в этом случае такая ошибка

ADODB.Command ошибка '800a0bb9'

Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом.
...
Рейтинг: 0 / 0
ASP+MsSQL = иньекция
    #38566078
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну проверьте все аргументы
вот например переменная x
какой у нее тип?
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP+MsSQL = иньекция
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]