Предотвращение внедрения SQL в поля TEXT SQL Server с использованием Classic ASP - PullRequest
1 голос
/ 06 августа 2010

У меня есть код в ASP, который помещает значения в текстовое поле в SQL Server с помощью параметризованных запросов. Мне было интересно, достаточно ли параметризации или мне нужно искать в поле потенциальные команды, заменяя одиночные галочки на двойные галочки и т. Д. Текстовые поля являются эссе, поэтому они могут содержать любое количество слов или символов.

Я в безопасности?

sSQL="[usp_SaveDocumentGradeCriteria]"
            Set dbCommand = Server.CreateObject("ADODB.Command")    
            Set dbCommand.ActiveConnection = oConn  
            dbCommand.CommandType = adCmdStoredProc 
            dbCommand.Commandtext=sSQL  
            dbCommand.Parameters.Append (dbCommand.CreateParameter("@CriteriaXML", adLongVarChar, adParamInput, len(saveXML), saveXML))
            dbCommand.Parameters.Append (dbCommand.CreateParameter("@Comments", adLongVarChar, adParamInput, len(commentText), commentText))    
            dbCommand.Parameters.Append (dbCommand.CreateParameter("@documentGUID", adGuid, adParamInput, 0, documentGUID)) 
            dbCommand.Parameters.Append (dbCommand.CreateParameter("@graderFYCUserID", adInteger, adParamInput, 0, fycuserid))  
            dbCommand.Parameters.Append (dbCommand.CreateParameter("@graderSequence", adInteger, adParamInput, 0, graderSequence))  
            if trim(grade)<>"" then
                dbCommand.Parameters.Append (dbCommand.CreateParameter("@grade", adInteger, adParamInput, 0, grade))    
            end if


            set oRST=dbCommand.Execute

1 Ответ

9 голосов
/ 06 августа 2010

Передача текста в качестве параметра исключит возможность внедрения SQL для вызова хранимой процедуры .Однако это ничего не говорит о самой хранимой процедуре, она также может подвергаться инъекции SQL, если она использует динамический SQL.И даже если хранимая процедура безопасна, вам все равно нужно убедиться, что вы не выполняете межсайтовый скриптинг с контентом, загружаемым при его отображении на клиенте.

Действительно сквознойигра, в которой вы должны обезопасить каждый шаг .Использование параметров при вызове процедуры хорошо, но никто не может сказать, достаточно ли этого.Вы должны следить за данными до тех пор, пока они не отобразятся в браузере клиента (и, возможно, продолжите работу даже после этого, если ими манипулируют JScripts ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...