Основные идеи:
Напишите независимую программу для каждой функции, страницы программы
Позвольте клиентам знать как можно меньше информации на вашей стороне сервера
Не используйте идею «клиенты должны написать это», чтобы подумать о проблеме
Думайте о как можно больше вещей, которые не могут произойти
1. Возможные проблемы с интерактивными динамическими веб -страницами
1.1 Взаимодействие типа формы
1.1.1 Введение в концепции
Когда мы взаимодействуем с посетителями, наиболее часто используемая форма (метод Post/get/put). Хотя это очень удобно, из -за этого возникают многие проблемы.
Флаг ввода в форме формы
Используется для принятия информации, введенной пользователями, такими как: имя пользователя, пароль, электронная почта и т. Д. Если вы плохо проверяете ввод пользователя, вредоносный пользователь
Заблокирует некоторые защитные машины
Чтобы обойти сертификацию безопасности. Например, ввод стандартного оператора HTML или оператора JavaScript изменит результат вывода, а введение стандартного оператора HTML в поле ввода будет
Какие результаты будут получены? Например, в книге сообщений мы вводим содержание нашего сообщения: <fontsize = 10> Привет! </font> Если в вашей программе нет экрана
Блок HTML -операторы, затем будет изменен шрифт "Hello"
размер. Изменение размера шрифта и наклейки в книге сообщений иногда неплохо, но это может сделать книгу сообщений яркой. Но если вы напишете это в поле ввода
Dead Loop JavaScript, например:
<aherf = "http: // someUrl" onmouseover = "while (1) {window.close ('/')}"> Первая тысяча захватывающих </a> затем проверьте сообщение для других.
Просто переместите гостей
Если вы перенесете мышь на «первую тысячу захватывающих», браузер пользователя умрет из -за мертвого цикла.
1.1.2 Ключевые моменты профилактики
(1) Отфильтруйте специальные символы
([/&;/`'/// |"*?
<scriptlanguage = "vbscript">
subbubotton_onclick
erm1.uusername.value = "" Тогда
msgbox "Ваше имя не может быть пустым!", 0+32, "О! Пока не возможно"
form1.uusername.focus
Exitsub
эндиф
efform1.upassword.value = "" Тогда
msgbox "Ваш пароль не может быть пустым!", 0+32, "О! Пока не возможно"
form1.upassword.focus
Exitsub
эндиф
erm1.uusername.value = "" Тогда
msgbox "Ваше имя не может быть пустым!", 0+32, "О! Пока не возможно"
form1.uusername.focus
Exitsub
эндиф
Form1.submit
заканчивая
</script>
functionisempty (objname)
{
varstr = document.inputform [objname] .value
vartmpstr = str.replace ([/&;/`'/// |"*? ~ <>^/(/)/[/]/{/}/$/n/r]) /// $ 1/g;, "")
vartmpstr = tmpstr.replace ([/&;/`'/// |"*? ~ <>^/(/)/[/]/{/}/$/n/r]) /// $ 1/g;, "")
return (tmpstr.length == 0)
}
functionCheck ()
{
tf = document.inputform
Ошибки = ""
if (isempty ("имя пользователя")) ошибки+= "Имя пользователя не может быть пустым ./n";
if (isempty ("пароль")) ошибки+= "пароль не может быть пустым!/n"
if (ошибки! = "")
предупреждение (ошибки);
вернуть (ошибки == "")