一、XSS跨站脚本攻击
数据中包含脚本。
1、xss分类
①反射型通过url参数注入,形成一个有毒的链接。②存储型这段脚本经过数据库。2、xss攻击的注入点
①HTML节点内容节点中包含<script></script>标签②HTML属性某个属性被"或者'提前关闭,攻击者加上另外一些可运行脚本的属性。③JavaScript代码 字符串提前关闭。④富文本本身就是一段HTML,可能出现很多种注入方式。3、XSS攻击防御
①对于HTML节点内容、HTML属性、JavaScript代码类型攻击使用字符串转义②富文本的防御使用白名单③CSP二、CSRF跨站请求伪造攻击
CSRF是让用户在不知情的情况,冒用其身份发起了一个请求。
比如,点击不知情链接,利用图片url.src发送请求。1、CSRF攻击原理
①用户1登录A网站②A网站确认身份③用户1没有退出登录,并且使用同一浏览器打开一个不知情的B网站。④B网站页面向A网站发起请求(携带A网站的cookie)2、CSRF攻击防御
①same-site属性禁止第三方网站携带cookie②验证码使得必须访问A网站的前端,才能获取到验证码。③token验证码有时候会影响用户体验。使用token,服务器端发送一个随机的token到客户端,客户端发送请求带上token。⑤referer禁止来自第三方网站的请求。三、Cookie安全
比如Cookie中存放了用户ID,这个用户ID就面临着被篡改或者被盗取的风险。
1、Cookie和XSS
①XSS可以偷取Cookie②http-only的Cookie不会被偷2、Cookie和CSRF
①CSRF利用了用户Cookie②攻击站点无法读取Cookies③最好能阻止第三方使用Cookies(same-site)3、Cookie安全防御
①用户ID+签名利用签名验证用户ID是否被篡改。②用户ID加密(srypt)服务端进行加密后再传输,收到请求再解密。③SessionId服务端使用session保存用户ID,传送SessionId给客户端。④http-only防止XSS攻击盗取Cookie。④same-site防止CSRF利用了用户Cookie。⑤secure只有HTTPS才可以读取Cookie,保证Cookie在传输过程中的安全。四、前端点击劫持
点击劫持原理本质就是利用iframe实现了障眼法。用户真正点击的其实不是用户所看到的东西。真正的东西把透明度设置成了0,用户看不到。这样可以诱导用户在不知情的情况下完成某些操作。
1、点击劫持的防御
①禁止内嵌iframe(JavaScript禁止内嵌 、sandbox)②其他辅助:加验证码五、传输安全问题
HTTP是明文传输,所以在传输过程中有可能被窃听和篡改。
1、HTTP窃听
①用户名密码②传输敏感信息③个人资料(银行卡……)2、HTTP篡改
①插入广告②重定向网站③无法防御XSS和CSRF④运营商和局域网劫持3、传输安全问题防御
①HTTPS以安全为目标的HTTP通道,简单讲是HTTP的安全版。安全保障:TLS(SSL)加密+CA证书。六、密码安全
1、密码泄露
①数据库被偷②服务器入侵③通讯被窃听④内部人员泄露数据2、密码存储
①严禁明文存储(防泄露)②单项变换(防泄漏)③变换复杂度要求(防猜解)④密码复杂度要求(防猜解)⑤加盐(防猜解)3、加密
md5 sha1 sha2564、前端加密
前端加密意义有限,但是并不是没有意义。比如保护用户隐私,防止猜测用户其他网站的密码等。七、SQL注入
SQL注入和XSS攻击有点相似。写入数据库中的数据变成SQL语句逻辑。攻击者可以通过SQL命令攻击程序弱点。深层次的原因是网站程序上允许SQL语句传递到数据库,并且直接和数据库交互。
1、危害
①猜解密码(工具)②获取数据③删库删表......2、SQL注入的防御
①关闭错误输出错误信息输出到前端会让黑客更加准确的定位错误。②检查数据类型,参数。parseInt()③对数据进行转义。npm install mysql④使用参数化查询。npm install mysql2⑤使用ORM(对象关系映射)npm install sequelize3、NoSQL注入
NoSQL(不仅仅是NoSQL)数据存储系统已经非常流行,因为它们易扩展且易于使用。尽管NoSQL数据存储的新的数据模型和查询格式令原来的攻击不再有效了,但攻击者却可以寻找新的契机插入恶意代码。1、NoSQL防御
①检查数据类型②类型转换③写完整条件(验证对象内容)八、上传问题
1、过程
①上传文件②再次访问上传的文件③上传的文件被当成程序解析2、上传问题防御
①限制上传后缀 ②文件类型检查 ③文件内容检查(文件头信息) ④程序输出(读,写,性能有影响) ⑤权限控制-可写可执行互斥九、其他安全问题
1、拒绝服务DOS
①模拟正常用户②大量占用服务器资源(上线)③系统崩溃2、分布式拒绝服务攻击DDOS
①流量可达几十到上百G②分布式(肉鸡,代理)③难防御3、DOS防御
①防火墙②交换机、路由器防御③流量清洗④高防IP⑤避免重逻辑业务⑥快速失败快速返回⑦防雪崩机制......4、重放攻击
重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。后果:
①用户被多次消费②用户登录态被盗取③多次抽奖......防御:
①加密(HTTPS)②时间戳③token④nonce⑤签名(防篡改)