阿里云

别再傻傻地写代码,程序认证安全防护的知识你了解吗?

Web的安全防护已经讲过一些知识了,下面继续说一下安全防护中的密码传输、敏感操作二次认证、客户端强验证、认证的错误消息、防止暴力破解、日志与监控等。

 1577882599683979.jpg

一、密码传输

登录页面及所有后组需要认证的页面必须通过SSL、TSL或其他的安全传输方式进行访问,初始登录页面必须使用SSL、TSL访问,否则攻击者可能会更改登录表单的action属性,导致用户登录凭证泄露,如果登录后未使用SSL、TSL访问认证页面,攻击者坑内会窃取未加密的会话ID,从而危及用户当前活动会话,同事,还应该尽可能对密码进行二次加密,然后在进行传输。

二、敏感操作二次认证

为了减轻CSRF、会话劫持等漏洞的影响,在更新账户敏感信息(如用户密码,电子邮箱,交易地址等)之前需要验证账户的凭证,如果没有这种策略,攻击者不需要知道用户的当前凭证,就能通过CSRF、XSS攻击执行敏感操作,此外,攻击者还可以临时接触用户设备,访问用户的浏览器,从而窃取会话Id来接管当前会话。

三、客户端强验证

应用程序可以使用第二因素来检测用户是否可以执行敏感操作,典型示例为SSL、TSL客户端身份验证,又称SSL、TSL双向校验,该校验由客户端和服务端组成,在SSL、TSL握手过程中发送各自的证书,就像使用服务端证书想证书颁发机构(CA)校验服务器的真实性一样,服务器可以使用第三方CS或自己的CA校验客户端证书的真实性,为此,服务端必须为用户提供为其生成的证书,并为证书分配相应的值,以便用这些值确认证书对应的用户。

四、认证的错误信息

认证失败后的错误信息,如果未被正确实现,可被用于枚举用户ID与密码,应用程序应该以通用的方式进行相应,无论用户名还是密码错误,都不能表名当前用户的状态。

错误的相应示例:

登录失败,无效密码;

登录失败,无效用户;

登录失败,用户名错误;

登录失败,密码错误;

正确的相应示例:

登录失败,无效用户名或密码

某些应用程序返回的错误信息虽然相同,但是返回的状态码却不相同,这种情况下也可能会暴露账户的相关信息。

五、防止暴力破解

在Web应用程序上执行暴力破解是一件非常容易的事情,如果应用程序不会由于多次认证失败导致账户禁用,那么攻击者将有机会不断地猜测密码,进行持续的暴力破解,直至账户被攻陷。普遍的解决方式有多因素认证、验证码、行为校验(阿里云、极验等均提供服务)

六、日志与监控

对认证信息的记录和监控可以方便的检测攻击和故障,确保记录以下3项内容:

1、 记录所有登录失败的操作;

2、 记录所有密码错误的操作;

3、 记录所有账户锁定的登录;


喜欢就点个赞吧

发表评论

需要先登录,才能发表评论哦!登录

网友评论
暂无评论