64. jsp和servlet的区别
- jsp经过编译就成了servlet(jsp本质就是servlet,JVM只能识别Java类,Web容器会将jsp转换成JVM能够识别的Java类)
65. jsp的内置对象有哪些?
jsp有9个内置对象
- request:封装客户端的请求,其中包括来自Get请求和Post请求的参数
- response:封装服务器的响应
- pageContext:通过该对象可以获取其他对象
- session:封装了用户会话的对象
- application:封装服务器运行环境的对象
- config:Web应用的配置对象
- out:页面的输出流对象
- page:页面本身(相当于Java类的this)
- exception:封装了页面抛出的异常对象
66. jsp的四种作用域
JSP的四种作用域包括:page,request,session,application
- page:代表与一个页面相关的对象和属性
- request:代表与Web客户端发出的一个请求相关的对象和属性
- session:代表与用户和Web服务器建立的一次会话相关的对象和属性
- application: 代表与整个Web应用相关的对象和属性
67. session和cookie的区别
session是服务器保存的一种数据结构,用于追踪用户;cookie是客户端用于保存用户信息的机制,用于保存用户的信息,也是实现session的一种方法。在发送Http请求时,客户端都会发送相关的cookie到服务器。在第一次创建session的时候,服务器会告知客户端需要在cookie保存的Session ID,用于标识用户,下一次访问携带该cookie即可被识别该用户。如果客户端禁用cookie,可以使用url重写的方式来实现session机制
68. session的原理
类似于一个map,键存储的是Session ID,当客户端发送请求携带Session ID时,服务器端就可以从这个map中找到对应的信息
69. 如果客户端禁用cookie,session还可以实现吗
可以。手动通过url传值,隐藏表单传递Session ID
70. spring mvc和struts的区别
- 拦截机制不同:spring mvc是方法级别的拦截,struts是类级别的拦截
- 底层框架不同:sprig mvc是通过servlet(DispatchServlet)实现,struts是通过Filter实现
- 性能不同:spring mvc的开发效率和性能要高于struts
71. 如何防止spl注入
- PreparedStatement
- 使用正则表达式过滤参数
- 字符串过滤
72. XSS攻击
跨站脚本攻击,其原理是攻击者向存在XSS漏洞的网站输入恶意的HTML代码,当用户浏览该网站时,该代码会自动执行,从而达到攻击的目的。
防范思路:对输入进行过滤,对输出进行编码
73. CSRF攻击
跨站请求伪造:一般来说,攻击者通过伪造用户的浏览器请求,向用户曾经认证过的网站发送出去,而该网站会误以为是用户并执行相关的操作,通常用于盗取密码,转账,发送虚假信息
解决方法:
- 验证Http Referer信息:记录了Http请求的来源地址
- 使用验证码:用户不友好
- 在请求地址添加toekn:要抵御 CSRF,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中
- 在请求头自定义属性并验证