个流程为例:用户访问一个actio
,告诉它用户想看ID为7的文章,这个actio
就会继续完成前面所说的流程。r
r
如果是ASP程序,这就是最容易产生问题的时候,ASP是弱类型,接到参数后不需要转换类型,就和SQL语句连加起来。但是JSP就不一样,JSP是强类型的语言,接受有害的参数后:对于GET请求(直接在地址栏访问页面),如果这里要的是i
t型,即使不懂安全的程序员,也会把它(文章的ID)立刻转换成i
t,因为这里转换后在后面的处理中会更容易操作,而这时程序就出错了;对于POST请求,如果这里要的是i
t型,程序会在把它封装成Form对象时,因为自动要进行类型转化,同样发生错误,这两种错误发生后,根本不会访问后面的流程就跳出了,或许这就是JSP天生的安全性。所以,通常提交的变量是i
t时,不会发生问题,问题会出现在stri
g参数这里,如果要查看某用户的信息,程序可能会让你提交如下参数:showuserdouser
amekxlzx。问题来了,因为这里是stri
g类型,所以不懂安全的程序员顶多会判断一下是不是空,就连加成为SQL语句。有漏洞的程序大概会写成这个样子:r
r
ACTION的代码:showuserdor
Stri
guser
ame
ullr
user
amerequestgetParameter