微信号:imooc-com

介绍:慕课网是一个超酷的互联网、IT技术免费学习平台,创新的网络一站式学习、实践体验;服务及时贴心,内容专业、有趣易学。专注服务互联网工程师快速成为技术高手!

黑客搞事情?您的好友Web安全还有3秒到达现场

2017-06-22 19:42 color




- 01 写在前面的话 -



从这次蠕虫勒索病毒事件来看,网络安全已然成为备受关注的新领域。说起网络安全,绝大多数人都是既熟悉又陌生。


熟悉的是玩电脑的时候都知道要安装杀毒软件,陌生的是大家并不了解遇到安全问题该如何解决,又该如何杜绝隐患。


我们要知道,当Web安全遭受威胁时会有哪些后果呢?轻则造成信息漏洞,重则可导致用户遭遇不可弥补的损失。



02 关于web安全的问答-



Q

老师,您好,作为一名后端开发工程师javaweb而言,我觉得有许多web安全都是从用户输入进行攻击的,永远不要相信用户这句话很著名。。所以大部分从前端页面来做验证,判断,那么就java方向的后端工程师来说,有什么可以进行辅佐类的代码思想吗?在java方向的web开发好像比脚本语言要安全的多。。望老师解答,谢谢…

 TooooBug

首先,你说得很对,永远不要相信用户输入。既然如此,怎么可以信任前端验证呢?你暴露给前端的接口,前端只要给这个接口传数据就行了,你是无法保证这个数据是验证/过滤过的。所以验证/过滤这件事情一定是在后台做的。在这个前提下,常见的安全问题都需要java后台开发来关注。 另外说java比脚本安全得多,这个好像并没有什么论据可以支持。java后端出的安全问题也并不比脚本语言少。



Q

我见过有人被加了个js脚本,然后这个脚本会自己跳转到对方的网站上,甚至在百度搜索引擎搜索的时候,在后面会有xxx的关键词,或者有的用户名没限制,可以让他输入js,再然后的话端口有些是我需要的,但是我不知道开启之后会不会不安全,所以我想知道下啥端口开启后是不安全的,比如21,3389什么的

 TooooBug

对的,XSS就是脚本注入。端口的话没有一刀切的说法,不可能说21是安全的,3389是危险的。如果真是这样的话,那大家只要避开危险端口就好了。事实上每个端口后面都对应有不同的服务,服务的部署水平会决定是否安全,此外,因为大部分服务使用的是开源软件,很可能带有被广泛公开的漏洞,所以开的服务越多,出问题的可能性就越大。



Q

老师,面试时会有哪些安全相关的问题吗

 TooooBug

这个看公司风格。大部分对技术面得比较详细的公司都会问安全的问题的。 一般会关注常见的比如 XSS CSRF SQL注入 上传等问题的原理和修复方案。还有密码安全也基本上是面试必考点。



Q

请问老师对于web项目怎么进行安全检查 有哪些步骤? 最佳实践是什么?

 TooooBug

安全检查的话,应该有几个方面: 

1. code review,通过review来发现一些明显的安全问题;2. 配置通用的安全机制,比如防火墙策略,公共安全检查机制(很多云服务都有入侵检测);3. 通过定期扫描,一些大公司会有这样的机制,由机器人24小时随机扫描网站和接口,发现很多典型的安全问题;4. 找安全公司进行审计,这个成本会比较高,一般适用于项目需要跨团队交付的情况 最佳实践的话我也不好说,这个得看具体的团队配置情况决定。团队成员方向和团队规模不一样的话,在安全方面的做法是会完全不一样的。



Q

用yii2框架是否比较安全可以排除一部分人

 TooooBug

框架一般会配置一些安全措施,比如像SQL注入,一般带ORM的框架都能比较好地处理。但是有一些场景还是需要自己处理的,比如像XSS、CSRF(框架可能有一些辅助),或者像密码安全之类的。所以还是要自己掌握好原理,不能依赖框架解决所有的安全问题。


Q

老师,请问前端需要关注安全问题吗?

 TooooBug

当然需要的。web前端开发是离用户最近的一群人,和安全问题息息相关。 比如XSS攻击正是通过前端的入口将攻击代码给过来的,也是通过前端的展示再将攻击代码展示给其它用户的。这中间有非常多需要前端去学习和关注的安全点,如果处理不好就会导致安全问题出现。 


当网站真的出现安全问题的时候,一般一线处理人员也会是前端先参与,确认出问题的地方和性质,然后看看如何修复。如果确实没有办法靠前端独立修复,也需要去指导后端同学一起参与修复,并且需要确认修复后用户体验是不受影响的。


Q

请问老师,各种安全问题产生的原理是什么呢

 TooooBug

安全问题的产生基本上有两种来源: 一是因为开发人员考虑不周,导致黑客找到漏洞。 二是代码跑的环境不安全,比如服务器被黑。 


作为开发人员,需要详细了解安全问题的原理。 比如XSS的原理是因为用户将它的数据变成了代码,在页面中跑起来了,所以就可以为所欲为。 CSRF则是当用户不知情时,被黑客的网页通过图片、表单等请求时,用户的登录态(Cookies)在不知情的情况下会被发送到服务器,导致用户在不知情的情况下被利用身份。 点击支持则是网页被嵌入到了其他网站中,并通过视觉隐藏的方式引导用户进行一些不知情的操作。 上传导致的漏洞是因为用户的文件没有做好判断和处理,导致传上来的文件被当成程序执行了。 SQL注入是用户的数据被当成了表示SQL语义的部分,改变了原来的查询语句的语义,从而产生意料之外的结果。


每一种安全问题背后都有复杂的原理,要在这里说清楚其实不太容易。如果你对哪一方面有兴趣的话我们可以单独详细探讨一下。 如果你希望系统地学习了解的话,推荐你看《Web前后端漏洞分析与防御》。

http://coding.imooc.com/class/104.html



 讲师介绍


TooooBug讲师,曾担任腾讯高级前端工程师,对Web前端领域的技术和方向有着深厚的功底,喜欢研究前沿技术。参与过《SVG精髓(第二版)》、《父与子的编程之旅——与小卡特一起学Python》、《JavaScript模式》的书籍翻译,是个博学多才的老师。



 阅读原文 TooooBug讲师录制的web安全教程等你学!



慕课网

程序员的梦工厂


在线编程 | IT技术 | 项目开发



 
慕课网 更多文章 学习之道 | 学习不是枯燥的劳作,是精彩的冒险(评论区留言送书啦!) 抽奖 | 双11实战大狂欢,“肾7”、iPad都给你准备好了! 新课速递 | Vue.js高仿饿了么外卖App 新课速递 | Android专项及自动化测试 Unittest测试 Fiddler抓包 新课速递 | 微信小程序入门与实战 常用组件 API 开发技巧 项目实战
猜您喜欢 猿吼:100位顶级CTO助你实现自我迭代进化 iOS应用架构现状分析 小学生发明工夫茶机器人,不仅能“关公巡城”,还能“韩信点兵” 交易技术支持专区 【福利】百度hadoop架构师教你学习大数据