首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Web安全基础防护原理

由于按照自己的理解来描述,文章可能有些地方描述不够准确,还望指正。

一、XSSfilter

一般在JavaWeb中,对于XSS攻击的防范主要是采用XSSfilter来进行过滤。实现过程就是在web.xml加一个filter,实现方式是实现servlet的Filter接口。XSS防御的总体思路是:对输入(和URL参数)进行过滤,对输出进行编码。也就是对提交的所有内容进行过滤,对url中的参数进行过滤,过滤掉会导致脚本执行的相关内容;然后对动态输出到页面的内容进行html编码,使脚本无法在浏览器中执行。虽然对输入过滤可以被绕过,但是也还是会拦截很大一部分的XSS攻击。

关键代码如下:

实现原理:通过过滤敏感的XSS函数来防止构成XSS攻击代码。

其他方案:过滤”” 将用户输入放入引号间,基本实现数据与代码隔离。过滤双引号防止用户跨越许可的标记,添加自定义标记。过滤TAB和空格,防止关键字被拆分。过滤script关键字。过滤&#,防止HTML属性绕过检查。、

二、登陆验证

[color=rgba(0, 0, 0, 0.7)]前端通过JS函数来进行登陆验证,首先前端对账号和密码进行MD5加密一次,服务器端返回一个随机生成的盐,每次登陆返回的盐值是不相同的,最后是MD5+盐的密码组合再进行一次MD5。在服务器端的数据库中,存储了账号或者密码的MD5值,服务器端通过加盐再进行MD5与前端进行比对,比对成功即为登陆成功。

如下图:

时序图:

通俗来讲:

1、客户端将需要登录的用户账号发给服务器

2、服务器反馈一个盐值

3、客户端将用户账号和密码做MD5,然后与盐值再次MD5后发给服务器

4、服务器根据步骤1中接收到的用户账号查找一个预存的MD5,然后于盐值再次MD5

5、服务器验证客户端发送的MD5与自己新生成的MD5是否相同

三、身份加密

异或加密是一种很简单的加密算法,无论是原理还是操作性上,都不具备任何难度,所以,在做一些简单的加密时,被广为采用。对个人的隐私数据进行XOR加密,需要解密时再次调用该方法即可。(身份证号,手机号等信息)

四、CSRF防御

漏洞原理我们不再讲解,主要描述防护原理。

大家都知道CSRF是因为web浏览器对于cookie和http身份认证等会话信息的处理存在一定缺陷。

1.我们可以采取验证码,强制用户必须与应用进行交互,才能完成最终请求。在通常情况下,验证码能很好遏制CSRF攻击。但是出于用户体验考虑,网站不能给所有的操作都加上验证码。因此验证码只能作为一种辅助手段,不能作为主要解决方案。

2.验证Referer请求通常是用于验证CSRF漏洞是否存在的一种方式,但是因为服务器并不是什么时候都能取到Referer,所以也无法作为CSRF防御的主要手段。

3.最好的办法是采取token验证,这种方法要比检查 Referer 要安全一些,token 可以在用户登陆后产生并放于 session 之中,然后在每次请求时把 token 从 session 中拿出,与请求中的 token 进行比对,但这种方法的难点在于如何把 token 以参数的形式加入请求。对于 GET 请求,token 将附在请求地址之后,这样 URL 就变成 http://url?csrftoken=tokenvalue。 而对于 POST 请求来说,要在 form 的最后加上 ,这样就把 token 以参数的形式加入请求了。

验证token:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180203B0NMUK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券