问题描述
怎么去杜绝这种的访问啊https://abc.aspx?Name=empName&Pwd=123我的是vb.net的项目,,怎么能够防止这种访问,对服务器的攻击呢?ImportsvenderPublicClassloginInheritsSystem.Web.UI.PageProtectedascPublicAsascPublicProtectedAmsAuthAsAmsAuth#Region"WebForm디자이너에서생성한코드"'이호출은WebForm디자이너에필요합니다.<System.Diagnostics.DebuggerStepThrough()>PrivateSubInitializeComponent()EndSubProtectedWithEventstxtEmpNoAsSystem.Web.UI.WebControls.TextBoxProtectedWithEventstxtPwdAsSystem.Web.UI.WebControls.TextBoxProtectedWithEventsbtnLoginAsSystem.Web.UI.WebControls.ImageButton'참고:다음의자리표시자선언은WebForm디자이너의필수선언입니다.'삭제하거나옮기지마십시오.PrivatedesignerPlaceholderDeclarationAsSystem.ObjectPrivateSubPage_Init(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Init'CODEGEN:이메서드호출은WebForm디자이너에필요합니다.'코드편집기를사용하여수정하지마십시오.InitializeComponent()EndSub#EndRegionPrivateSubPage_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load'여기에사용자코드를배치하여페이지를초기화합니다.IfNotPage.IsPostBackThentxtEmpNo.Text=GetCookies("loginCheck")IfSession("gLoginSabun")<>""ThenResponse.Redirect("main.aspx")EndIfEndIfEndSubPrivateFunctionGetCookies(ByValsKeyAsString)AsStringIfCookiesIDChecked(sKey)=TrueThenGetCookies=Request.Cookies(sKey).Value.ToString()ElseGetCookies=""EndIfEndFunctionPrivateSubSetCookies(ByValsKeyAsString,ByValsValueAsString)IfCookiesIDChecked(sKey)=TrueThenResponse.Cookies(sKey).Value=sValueResponse.Cookies(sKey).Expires=DateAdd(DateInterval.Day,15,Now).ToShortDateStringElseDimLocalCookieAsHttpCookieLocalCookie=NewHttpCookie(sKey)LocalCookie.Value=sValueLocalCookie.Expires=DateAdd(DateInterval.Day,15,Now).ToShortDateStringResponse.Cookies.Add(LocalCookie)EndIfEndSubPrivateFunctionCookiesIDChecked(ByValkeyAsString)AsBooleanDimiAsIntegerDimLocalCookieCollAsHttpCookieCollectionLocalCookieColl=NewHttpCookieCollectionDimLocalCookieAsHttpCookieLocalCookieColl=Request.CookiesDimarr1()AsStringarr1=LocalCookieColl.AllKeysCookiesIDChecked=FalseFori=0Toarr1.Length-1LocalCookie=LocalCookieColl(arr1(i))IfLocalCookie.Name=keyThenCookiesIDChecked=TrueExitForEndIfNextEndFunctionPrivateSubbtnLogin_Click(ByValsenderAsSystem.Object,ByValeAsSystem.Web.UI.ImageClickEventArgs)HandlesbtnLogin.ClickIftxtEmpNo.Text=""ThenCallascPrintMsg("사원번호를입력하여주십시요.",Me)ExitSubElseIftxtPwd.Text=""ThenCallascPrintMsg("비밀번호를입력하여주십시요.",Me)ExitSubEndIfCallgLoginCheck()EndSubPrivateSubbtnLogin_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)btnLogin.Attributes.Add("onMouseover","na_change_img_src('btnLogin','document','./image/main/login_icon_a.gif',true);")btnLogin.Attributes.Add("OnMouseOut","na_restore_img_src('btnLogin','document');")EndSubPrivateSubgLoginCheck()DimiCntAsIntegerDimrvAsLongDimdChngDateAsDateDimiWrngNumb,num,num2AsIntegerDimJUMIN_NUMB,bymdAsStringDiminputDesionDimlogin_flagAsStringDimli_rv,login_Error_msgAsStringOnErrorGoToascErrli_rv=""li_rv=AmsAuth.PassCheck(Trim(txtEmpNo.Text),Trim(txtPwd.Text),"MQ04",Request.UserHostAddress)'인증서버User_idCheck(2003.12.22ByNGJ.)num=Len(Trim(li_rv))num2=num-975login_flag=Trim(Left(li_rv,2))''login_Error_msg=Replace(Trim(Left(li_rv,num)),vbCrLf,"")Iflogin_flag="00"Then'Login성공처리및시스템계속진행CallgLoginCheck2()ElseIflogin_flag="01"Then'PWD변경화면을Openlogin_Error_msg="DefaultPassword를변경해야합니다.n"login_Error_msg&="또는n"login_Error_msg&="귀하는최근30일이내에Password를변경하지않으셨습니다.n"login_Error_msg&="기존Password를변경하셔야합니다.n"Response.Write("<script>")Response.Write("alert('"&login_Error_msg&"');")Response.Write("calWindow=window.open('./Source_C/MSTC091.aspx?sSabun="&Trim(txtEmpNo.Text)&"','MSTC091','height=179px,width=243px,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,left=400px,top=300px');")''Response.Write("calWindow.opener=self;")Response.Write("</script>")Else'PasswordCheck오류or인증실패txtPwd.Text=""Iflogin_flag="20"Thenlogin_Error_msg="귀하는최근90일동안시스템을한번도사용하지않아n"login_Error_msg&="더이상시스템을사용할수없습니다.n"login_Error_msg&="HELPDESK(T.032-520-5114)에게연락하시길바랍니다.n"ElseIflogin_flag="30"Thenlogin_Error_msg="귀하는하루에동일시스템로그인시연속하여5번Passwordn"login_Error_msg&="인증을실패하여더이상시스템을사용할수없습니다.n"login_Error_msg&="HELPDESK(T.032-520-5114)에게연락하시길바랍니다.n"ElseIflogin_flag="40"Thenlogin_Error_msg="귀하는HELPDESK에의해부여된DefaultPassword를n"login_Error_msg&="5일이내에변경하지않아더이상시스템을사용할수없습니다.n"login_Error_msg&="HELPDESK(T.032-520-5114)에게연락하시길바랍니다.n"ElseIflogin_flag="E1"Thenlogin_Error_msg="존재하지않는USERID입니다.n"ElseIflogin_flag="E2"Thenlogin_Error_msg="Password가틀렸습니다.n"login_Error_msg&="Password는대/소문자를구별합니다.n"ElseIflogin_flag="E3"Thenlogin_Error_msg="5연속Password인증에실패하였습니다.n"login_Error_msg&="더이상시스템을사용할수없습니다.n"login_Error_msg&="HELPDESK(T.032-520-5114)에게연락하시길바랍니다.n"ElseIflogin_flag="90"Thenlogin_Error_msg="귀하는퇴직했거나또는사용중지요청등에의해더이상n"login_Error_msg&="더이상시스템을사용할수없습니다.n"login_Error_msg&="HELPDESK(T.032-520-5114)에게연락하시길바랍니다.n"ElseIflogin_flag="91"Thenlogin_Error_msg="귀하는퇴직했거나또는사용중지요청등에의해더이상n"login_Error_msg&="더이상시스템을사용할수없습니다.n"login_Error_msg&="HELPDESK(T.032-520-5114)에게연락하시길바랍니다.n"ElseIflogin_flag="X1"Thenlogin_Error_msg="인증관리시스템오류입니다.n"login_Error_msg&="HELPDESK(T.032-520-5114)에게연락하시길바랍니다.n"ElseIflogin_flag="X2"Thenlogin_Error_msg="인증관리시스템오류입니다.n"login_Error_msg&="HELPDESK(T.032-520-5114)에게연락하시길바랍니다.n"Elselogin_Error_msg="인증관리시스템오류입니다.n"login_Error_msg&="HELPDESK(T.032-520-5114)에게연락하시길바랍니다.n"EndIfResponse.Write("<script>")Response.Write("alert('"&login_Error_msg&"');")Response.Write("</script>")ExitSubEndIfExitSub
解决方案
解决方案二:
前台界面代码是在这http://topic.csdn.net/u/20120315/17/c6da17d3-a160-4930-9c44-55df931df19f.html
解决方案三:
无法去杜绝这种的访问https://abc.aspx?Name=empName&Pwd=123但是可以忽略。如果是防止注入的话用参数化SQL就可以解决。如果是其他原因可以对获取到的值编码字符替换之类的方法都可以。
解决方案四:
引用2楼gzw13999的回复:
无法去杜绝这种的访问https://abc.aspx?Name=empName&Pwd=123但是可以忽略。如果是防止注入的话用参数化SQL就可以解决。如果是其他原因可以对获取到的值编码字符替换之类的方法都可以。
是的。可以忽略掉,不去处理这些没用的参数就好了。如果说你的方法就是要这样去传参数,可以在服务端设置一个验证码,可以确保是服务端自己使用这个方法,而客户端不能使用。比如服务端要使用https://abc.aspx?Name=empName&Pwd=123,服务端就Redirect到https://abc.aspx?Name=empName&Pwd=123&vld=17458327521348,保存vld,然后在服务端的接收部分去检查发来的请求vld是不是在你保存的vld列表中,如果在就继续执行,如果不在就忽略。因为用户手动输入的vld必然不在你的vld列表,这样就能防止用户去使用这个方式了,只有服务端能redirect。vld推荐使用GUID韩文注释。。。。鸭梨山大
解决方案五:
你用session传递参数,这些忽略即可
解决方案六:
不用url传参,改用Session传值,比较安全。
解决方案七:
强制使用Request.Form("Name")来接收传递过来的参数。