diff --git a/9.1.md b/9.1.md index 53fe5a5f..d946379e 100644 --- a/9.1.md +++ b/9.1.md @@ -1,4 +1,6 @@ ##9.1 预防session定置 +我们在前面小节介绍过session,它是用来实现在不同的请求之间的会话状态持续,为了保证session有效,用户的每一次请求都必须包含一个能够唯一标识回话的sessionID。 + ## links * [目录]() diff --git a/9.md b/9.md index 76400672..64a669a3 100644 --- a/9.md +++ b/9.md @@ -1,5 +1,15 @@ ##9 安全与加密 - +无论是开发Web应用的开发者还是企图利用Web应用漏洞的攻击者,对于Web程序安全这个话题都给予了越来越多的关注。特别是最近CSDN密码泄露事件,更是让我们对Web安全这个话题更加重视,所有人都谈密码色变,都开始检测自己的系统是否存在漏洞。那么我们作为一名Go程序的开发者,一定也需要知道我们的应用程序随时会成为众多攻击者的目标,并提前做好防范的准备。 + +很多Web应用程序中的安全问题都是由于轻信了第三放提供的数据造成的。比如对于用户的输入数据,在对其进行验证之前都应该将其视为不安全的数据。如果直接把这些不安全的数据输出到客户端,就可能造成跨站脚本攻击(XSS)的问题。如果把不安全的数据用于数据库查询,那么就可能造成SQL注入问题,我们将会在9.2、9.3小节介绍如何避免这些问题。 + +在使用第三方提供的数据,包括用户提供的数据时,首先检验这些数据的合法性非常重要,这个过程叫做过滤,我们将在9.4小节介绍如何保证对所有输入的数据进行过滤处理。 + +过滤输入和转义输出并不能解决所有的安全问题,我们将会在9.1讲解的session定置攻击,会导致受骗者使用攻击者选定的sessionID实施攻击破坏行为。 + +与安全加密相关的,能够增强我们的Web应用程序的强大手段就是加密,CSDN泄密事件就是因为密码保存的是明文,使得攻击拿手库之后就可以直接实施一些破坏行为了。不过,和其他工具一样,加密手段也必须运用得当。我们将在9.5小节介绍如何存储密码,如何让密码存储的安全。 + +加密的本质就是扰乱数据,某些不可恢复的数据扰乱我们称为单项加密或者散列算法。另外还有一种双向加密方式,也就是可以对加密后的数据进行解密。我们将会在9.6小节介绍如何实现这种双向加密方式。 ## 目录 * 1 [预防session定置](9.1.md)