기본 아이디어 :
각 기능, 프로그램 페이지에 대한 독립 프로그램을 작성하십시오
고객에게 가능한 한 적은 정보를 서버 측에서 알리십시오.
"고객은 이것을 작성해야한다"라는 아이디어를 사용하여 문제에 대해 생각하지 마십시오.
일어날 수없는 가능한 많은 일을 생각하십시오
1. 대화식 동적 웹 페이지와 관련된 가능한 문제
1.1 양식 유형 상호 작용
1.1.1 개념 소개
방문자와 상호 작용할 때 가장 일반적으로 사용되는 양식 (Post/Get/Put 방법). 매우 편리하지만 많은 문제가 발생합니다.
양식 형태의 입력 플래그
사용자가 입력 한 정보 (사용자 이름, 비밀번호, 이메일 등)와 같은 정보를 수락하는 데 사용됩니다. 사용자 입력을 잘 확인하지 않으면 악성 사용자
일부 안전 기계를 차단합니다
안전 인증을 우회합니다. 예를 들어, 표준 HTML 문 또는 JavaScript 문을 입력하면 출력 결과가 변경되고 입력 상자에 표준 HTML 문을 입력하면됩니다.
어떤 종류의 결과를 얻을 수 있습니까? 예를 들어, 메시지 책에서 우리는 메시지의 내용을 입력합니다. <fontsize = 10> 안녕하세요! </font> 프로그램에 화면이없는 경우
HTML 문을 차단하면 "Hello"글꼴이 변경됩니다.
크기. 메시지 책에서 글꼴 크기와 스티커를 변경하는 것은 때때로 나쁘지 않지만 메시지 책을 생생하게 만들 수 있습니다. 그러나 입력 상자에 쓰면
JavaScript의 죽은 루프 등 :
<aHerf = "http : // someUrl"onmouseover = "while (1) {wind
손님을 옮기십시오
마우스를 "첫 번째 천 스릴"으로 이동하면 사용자의 브라우저가 죽은 루프로 인해 죽습니다.
1.1.2 핵심 예방 지점
(1) 필터 특수 문자
([/&;/`/// | "*? ~ <>^/(/)/[/]/]/{/}/$/n/r]) /// $ 1/g;) 이것은 가장 기본적이며 여러 곳에서 한 번 이상 언급되었습니다.
<scriptLanguage = "vbscript">
subbubotton_onclick
erm1.uusername.value = ""그런 다음
Msgbox "당신의 이름은 비어질 수 없습니다!", 0+32, "아! 아직 불가능 해요"
form1.uusername.focus
출구
endif
efform1.upassword.value = ""그런 다음
Msgbox "비밀번호는 비어있을 수 없습니다!", 0+32, "아! 아직 불가능"
form1.upassword.focus
출구
endif
erm1.uusername.value = ""그런 다음
Msgbox "당신의 이름은 비어질 수 없습니다!", 0+32, "아! 아직 불가능 해요"
form1.uusername.focus
출구
endif
form1. 서브미트
Endsub
</스크립트>
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 ( "username")) errors+= "사용자 이름이 비어있을 수 없습니다 ./n";
if (isempty ( "password")) errors+= "비밀번호가 비어있을 수 없습니다!/n"
if (오류! = "")
경고 (오류);
return (errors == "")