如何让你的网站更容易被发现 (怎么让自己的网站更安全)

前言

如何确保网站访问安全,最安全的网站有哪些

本文将介绍一下三种网络攻击的解决方案:

  • XSS

  • CSRF

  • 脚本刷接口

XSS

XSS全称是Cross-site scripting,有点安全基础的同学应该都知道。就是通过一些用户可以输入的界面,比如评论,填入一些非法字符,如><script>alert(document.cookie)</script>等类似的方式,拿到攻击者想要的结果。

怎么防御呢?这种现象的产生原因无非是,前端模板或者后端模板在渲染的时候没有进行字符转译,导致<>这样的字符直接就渲染到了页面上。

所以,我们只需要在渲染前做一次转译,将这些符号转为字符实体就好了。幸运的是,现在的前端库,如vue,react,前端模板ejs,juicer,后端模板smarty,blade等,都已经内部做了转译了,开发者愉快的使用就好了。所以,其实我们完全不用做任何额外的工作。但是,还是理解内部机制比较好。

CSRF

CSRF全称是Cross-site request forgery,好多公司不做这个这种攻击的确在如今,对用户或者公司的危害非常小,不过还是要做的,因为,对于网络安全无小事。攻击场景的话,比如:网页有一个对作品点赞的功能,点赞提交地址为http://csrf.com/api.like?id=777,然后另外一个网站放了这样一个元素<img src="http://csrf.com/api.like?id=888">,这样的话,一旦用户进入这个bbb.com页面,就会请求csrf.com/api.like这个接口,因为用户的登录信息尚未过期,那就等于给id为888这个作品点赞了。

防御方式:

  • 后端判断referer是否合法

  • 每次请求都要带上token,token是csrf.com页面渲染时一起带过来的,这样的话,如果不在csrf.com页面发起这个点赞请求,token是不存在的,因为就能做到防御了。

脚本刷接口

这种攻击方式很简单,最傻瓜的就是在chrome打开控制面板,到console里这么做$.get('/getPhoneVerifyCode')。

最常见的场景就是,有些人总会刷网站的手机验证码接口,导致公司在短信接口上话费更多的费用(什么鬼)。

防御方式:

目前公认的解决方案,就一种,验证码验证

注意,最好不要用图文识别的验证码,那种很容易被破解的,现在有很多新型的验证码方式,比如滑块式、图片位置点击式等等。