资讯专栏INFORMATION COLUMN

如何防范XSS和CSRF?

lsxiao / 2910人阅读

摘要:前者主要由前端与后端合力完成,后者的话通常就是由前端多带带去完成的。毕竟各种防不胜防。日常开发中需要带有安全意识,端或者服务端都不信任外部的任何输入,任何参考文章前端安全防劫持与的防御注入的终极解决方案信息安全

距离上一次介绍XSS与CSRF已经过去了漫长了两个月,工作较忙,文章姗姗来迟。
小小回顾一下究竟什么是XSS和CSRF:https://segmentfault.com/a/11... 《用大白话谈谈XSS与CSRF》。

那么,我们来谈谈如何防范它。
CSRF依赖于XSS,防住XSS基本也就防住了CSRF让我们明确我们的目的,其实就是不让用户踏入XSS的坑,那我们有两个方法防止用户入坑,一个是对外部输入进行彻彻底底的敏感字符过滤,一个是在显示的时候做一些特殊处理不让敏感代码顺利执行。
前者主要由前端与后端合力完成,后者的话通常就是由前端多带带去完成的。

理论上只要有输入数据入口的地方,XSS漏洞就会存在,js代码可以由各种各样的模式注入到数据库中(明文或者编码),所以在中小项目中我们先明确一个意识即可,我们开发人员要有安全处理的意识,不求百分百的过滤掉非法字符,但是基本的,常见的过滤掉即可,剩下的就交给安全工程师去做吧。

中心思想:一切的一切外部来源数据,毕竟经过我们服务端代码的过滤,才能让他展示到页面上,也就是说,一切外部数据都是非法的,一定要做好过滤,尤其是WEB端。(毕竟各种js防不胜防)。
所以像以下这种直接把页面掌控权交给了用户的代码,是绝对不能写的:



下面的案例用世界上最好的语言来演示:

非法字符有两类,明文:,这样的明文传到服务端,如果让他就这么入库的话,我们的数据库就被XSS注入了,所以我们需要对明文的很好过滤,htmlspecialchars后即可把script标签过滤成安全字符

阅读需要支付1元查看
<