web安全问题简记

web常见的安全问题:

1. XSS (cross site scripting 跨站脚本攻击)

XSS用最简单的话介绍就是通过在输入内容中插入可执行代码达到影响/攻击/获取信息目的,所以可以将XSS问题理解为如何插入代码(攻击方)和如何过滤输入(防御方)的一个PK过程。这个过程其实是非常有趣斗智斗勇的,有兴趣的同学可以搜一搜相关内容,之前看过一篇生动形象的博文,可惜没有收藏,然后找到一篇很像的关于XSS与CSRF(此文有六年,这六年间又有了一些新东西,不过还是非常有参考意义)。
作为 web 开发者,如何防范 XSS?

  1. 将重要的 cookie 标记为 http only, 这样的话 Javascript 中的 document.cookie 语句就不能获取到 cookie 了;
  2. 表单数据规定值的类型,可以使用 pattern 正则判断合法性,减少可能的意外发生概率;
  3. 对数据进行 Html Encode 处理(主要针对< > ’ "等可能形成运行代码的字节);
  4. 过滤或移除特殊的Html标签, 例如: <script>, <iframe> , &lt; for <, &gt; for >, &quot for
  5. 过滤 JavaScript 事件的标签。例如 “οnclick=”, “onfocus” 等等;
  6. 文本区域使用 innerHTML,这样出现的<script>内容就是不会运行的(也要防范用户插入img onerror)。
2.CSRF(Cross Site Request Forgery, 跨站请求伪造)

参考文章: CSRF攻击的应对之道
简介: CSRF 是诱导用户发送请求给被攻击站点,从而到达某些目的。
防范方式:

  • 验证 HTTP Referer 字段:http 请求头中有一个 referer 字段,值为请求方的地址,服务端可以通过拦截验证 referer 的值,判断是否为合法请求,此法无法保证完全安全(某些老式浏览器可以更改 referer,某些用户会不发送 referer)。
  • 增加 token:在请求时增加一个 token 参数,服务端解析 session 获取 token,如果没有值或者值不匹配则认为是非法请求,弊端是麻烦,而且无法保证完全安全(攻击者伪造 token,referer 泄漏等)。
  • 在 HTTP 头中自定义属性并验证:此法是直接给 XHR 增加请求头字段,服务端再检测字段,这样安全性较高(不会被浏览器记录,不会因为referer泄漏),但是老系统增加此方式很工作量很大,且会影响用户一些正常体验,最好选择性增加。

关于XSS和CSRF的关系知乎有比较简单易懂的回答大家可以参考:如何用简介生动的语言说明 XSS 和 CSRF 的区别?
web安全还有一个之前比较火的SQL注入,不过现在服务器开发多数已经形成了可以有效避免SQL注入的变成习惯(有意或无意),而且数据库也都有权限控制,所以一般的SQL注入现在很难行得通,当然开发人员也要注意,常在河边走哪有不湿鞋。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值