发表于: 2018-02-28 23:46:19

0 650


今日完成:

1.       添加项目名后,href=""会跳转到跟目录,href="javascript:void(0);"或者href="javascript:;"

2.       使用<base href="<%=basePath%>">会导致页面内跳转失败,因为basePath添加了默认项目目录,缺少了当前页面目录

方法一:添加当前页面目录

<a class="nav-bar-a" href="school/profession/#${item}">${item}</a>

    使用下面的方法组合目录

request.getRequestURL() http://localhost:8080/jqueryLearn/resources/request.jsp

request.getRequestURI() /jqueryLearn/resources/request.jsp

request.getContextPath()/jqueryLearn

request.getServletPath()/resources/request.jsp

3.       nginx负载均衡后使用绝对路径<base>标签等方法会获得自己设置的域名跳转链接

                                             

解决方法:

upstream 47.95.248.39 {

       server 127.0.0.1:8080;

}

4.       css

这个路径虽然报错,但是可以加载图片(???是不是通过spring读取到了图片)

换成相对路径,不报错,也可以加载

5.       WEB-INF对客户端不可见,即使无法通过含有/WEB-INF/的路径进行直接访问(之前理解有误)

mvcresources 等三种方法就是解决这个问题的

<!--本项目把静态资源放在了WEB-INFstatics目录下,资源映射如下-->
<mvc:resources mapping="/css/**" location="/WEB-INF/statics/css/"/>
<
mvc:resources mapping="/js/**" location="/WEB-INF/statics/js/"/>
<
mvc:resources mapping="/image/**" location="/WEB-INF/statics/image/"/>

6.       DES加密算法(对称密码体制)

key:密钥,8字节64

Data:需要被加密/解密的数据,8字节64

Mode:两种工作方式:加密/解密

(在通信网络两端约定共用一套key进行加密解密操作)

缺点:

1)交易双方都使用同样钥匙,安全性得不到保证。

2)每对用户每次使用对称加密算法时,都需要使用其他人不知道的惟一钥匙,这会使得发收信双方所拥有的钥匙数量呈几何级数增长,密钥管理成为用户的负担。对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。

RSA加密算法(非对称加密)

定义:RSA既能用于数据加密,也能用于数字签名。

RSA的算法涉及三个参数,ne1e2

其中,n是两个大质数pq的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。

e1e2是一对相关的值,e1可以任意取,但要求e1(p-1)*(q-1)互质;再选择e2,要求(e2×e1)1(mod(p-1)×(q-1))

ne1),(ne2)就是密钥对。其中(ne1)为公钥,(ne2)为私钥。

RSA加解密的算法完全相同,设A为明文,B为密文,则:AB^e2( mod n)BA^e1 (mod n);(公钥加密体制中,一般用公钥加密,私钥解密)

e1e2可以互换使用,即:

AB^e1 (mod n)BA^e2( mod n);

局限性:由于进行的都是大数计算,速度一直是RSA的缺陷。一般来说只用于少量数据加密。

MD5加密算法:

定义:MD5算法是将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,即使你看到源程序和算法描述,也无法将MD5的值变回原始的字符串。

MD5算法具有以下特点:

1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。

2、容易计算:从原数据计算出MD5值很容易。

3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。

7.       CookieSession

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是CookieSessionCookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份

 

HTTP无状态,每次客户端从服务器请求,三次握手,传送完数据就断开连接,因此会话不能持续。

 

客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

 

Session是服务器端使用的一种记录客户端状态的机制,使用上比Cookie简单一些,相应的也增加了服务器的存储压力。

Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。

8.       基于 Token 的身份验证方法

客户端使用用户名跟密码请求登录

服务端收到请求,去验证用户名与密码

验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端

客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage

客户端每次向服务端请求资源的时候需要带着服务端签发的 Token

服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据

9.       Token标准方法JWT

JSON Web Tokens 采用Base64编码

JWT 标准的 Token 有三个部分:

header

    {

  "typ": "JWT",    //Token类型

  "alg": "HS256"   //使用的算法

}

payload

           issIssuer,发行者

subSubject,主题

audAudience,观众

expExpiration time,过期时间

nbfNot before

iatIssued at,发行时间

jtiJWT ID

+自定义

signature

         JWT 的最后一部分是 Signature ,这部分内容有三个部分,先是用 Base64 编码的 header.payload ,再用加密算法加密一下,加密的时候要放进去一个 Secret ,这个相当于是一个密码,这个密码秘密地存储在服务端。

10.   任务四TILES框架学习心得+赞美老大

https://zhuanlan.zhihu.com/p/34116571

明日计划:

1.       使用DES对用户ID和登录时间加密,生成Token,放入Cookie中,拦截器里通过Cookie中判断Token的有效性来判断用户是否登录。

2.       修改Task4中的两个页面,一个设为用户不登录可以访问,一个设为用户必须登录才可以访问。要求用户必须登录才能访问的url统一增加前缀 /u/

遇到的问题:

1.       暂无

收获:

1.       学习三种不同加密算法的优缺点

2.       cookie session token 概念理解

3.       用户登录的过程,验证机制的实现方式



返回列表 返回列表
评论

    分享到