25@JSP_day06
一、案例:
注册登录
1、"sql注入"(了解):
用户可以通过修改sql语句的结构来构造一些有非法用途的sql语句,比如可以绕过登录验证等。
比如:
如果客户端没有添加表单验证,用户可以输入1' or '1' = '1这样的参数值,而服务端使用的是statement,则可以构造出类似于 select * from t_user where ... or '1' = '1'。
要尽量避免产生sql注入的问题,可以从以下两个方面入手:
客户端:添加验证,禁止用户输入 '。
服务器端:使用preparedStatement来代替statment。
2、摘要(了解)
一般不会直接将用户密码直接保存到数据库,而是使用某种加密算法生成摘要字符串,然后保存到数据库。
了解摘要:
任意一个字符串,依据摘要算法,会生成一个固定长度的字符串(称为摘要),依据摘要,不能够推测出原始的字符串。
摘要具有唯一性(不同的字符串,会生成不同的摘要)和不可逆性(不能依据摘要来反推出原来的字符串)。
可以使用jdk中的MessageDigest来生成摘要。
二、路径(地址)问题
1、路径相关的四种情况:
链接、表单提交、重定向、转发
<a href=""></a>
<form action="">
response.sendRedirect("");
request.getRequestDispatcher("");
2、相对路径与绝对路径
1)什么是相对路径:
不以"/"开头的路径。
2)什么是绝对路径
以"/"开头的路径。
3)如何写绝对路径
链接、表单提交、重定向绝对路径从应用名开始写,而转发从应用名之后开始写。
//返回/appname
String request.getContextPath();
三、状态管理