'Функция: функция безопасного обнаружения строки
'Имя:SafeCheck
'Параметры: CheckString, CheckType, CheckLength
'проиллюстрировать:
'Checkstring Строка, которую необходимо обнаружить: любой символ.
'Тип обнаружения CheckType 0 обычный короткий символ 1 число 2 дата 3 деньги 4 кодирование HTML5 декодирование строки входа в HTML6 7 обнаружение защиты от атак
'CheckLength определяет длину типа: тип — int, если это деньги, то это позиция десятичной точки
'Возвращаемое значение: если тест пройден, верните правильную строку,
'Если это не удалось, верните код ошибки SYSTEM_ERROR|ERROR_CODE.
'Скрипт написан :SnowDu(DU雪.NET)
'Интернет: http://www.snsites.com/
'Интернет: http://www.downcodes.com/
'---------------------------------------------
функция SafeCheck(CheckString, CheckType, CheckLength)
При ошибке Возобновить Далее
ErrorRoot="SYSTEM_ERROR|"
если checkString="" тогда
SafeCheck=ErrorRoot&"00001"
функция выхода
закончить, если
CheckString=Replace(CheckString,"'","'")
выберите регистр CheckType
случай 0
CheckString=обрезать(CheckString)
SafeCheck=Влево(CheckString,CheckLength)
случай 1
если не является числом (CheckString), то
SafeCheck=ErrorRoot&"00002"
функция выхода
еще
SafeCheck=Влево(CheckString,CheckLength)
конец, если
случай 2
tempVar=IsDate(CheckString)
если не TempVar, то
SafeCheck=ErrorRoot&"00003"
функция выхода
еще
выберите регистр CheckLength
случай 0
SafeCheck=FormatDateTime(CheckString,vbShortDate)
случай 1
SafeCheck=FormatDateTime(CheckString,vbLongDate)
случай 2
SafeCheck=CheckString
конец выбора
конец, если
случай 3
tempVar=FormatCurrency(CheckString,0)
если Эрр, то
SafeCheck=ErrorRoot&"00004"
функция выхода
еще
SafeCheck=FormatCurrency(CheckString, CheckLength)
конец, если
случай 4
sTemp = Контрольная строка
Если IsNull(sTemp) = Истина Тогда
SafeCheck=ErrorRoot&"00005"
Выход из функции
Конец, если
sTemp = Заменить(sTemp, "&", "&")
sTemp = Заменить(sTemp, "<", "<")
sTemp = Заменить(sTemp, ">", ">")
sTemp = Заменить(sTemp, Chr(34), """)
sTemp = Заменить(sTemp, Chr(10), "<br>")
SafeCheck = Влево(sTemp,CheckLength)
случай 5
sTemp = Контрольная строка
Если IsNull(sTemp) = Истина Тогда
SafeCheck=ErrorRoot&"00006"
Выход из функции
Конец, если
sTemp = Заменить(sTemp, "&", "&")
sTemp = Заменить(sTemp, "<", "<")
sTemp = Заменить(sTemp, ">", ">")
sTemp = Заменить(sTemp, """, Chr(34))
sTemp = Заменить(sTemp, "<br>",Chr(10))
SafeCheck = Влево(sTemp,CheckLength)
случай 6
s_BadStr = "' &<>?%,;:()`~!@#$^*{}[]|+-=" & Chr(34) & Chr(9) & Chr(32)
n = Лен(s_BadStr)
ИсСафеСтр = Истина
Для i = 1 К n
Если Instr(CheckString, Mid(s_BadStr, i, 1)) > 0 Тогда
ИссафеСтр = Ложь
Конец, если
Следующий
если IsSafeStr, то
SafeCheck = влево (CheckString, CheckLength)
еще
SafeCheck=ErrorRoot&"00007"
Выход из функции
конец, если
случай 7
s_Filter="net user|xp_cmdshell|/add|select|count|asc|char|mid|'|""|"
S_Filter=S_Filter&"вставить|удалить|удалить|обрезать|из|%|объявить|-"
S_Filters=split(S_Filter,"|")
isFound = ложь
для i=0 до ubound(S_Filters)-1
если Instr(lcase(CheckString),lcase(S_Filters(i)))<>0 тогда
isFound=истина
выход для
конец, если
следующий
если найдено, то
SafeCheck=ErrorRoot&"00008"
Выход из функции
еще
SafeCheck = влево (CheckString, CheckLength)
конец, если
конец выбора
конечная функция