
几个Web开发人员必知的安全缩略语你有很多理由需要了解Web安全比如你是一位关心个人隐私数据正被泄露的用户你是一名Web开发人员想要编写更加安全的Web应用你是一位正在应聘Web开发岗位准备面试有关Web安全问题。诸如此类本文将通俗易懂的准确地解释一些常用的Web安全缩略语。在此之前我们要了解两种模式分别代表着两个极端但又同属一个观念层次。安全的两个模式一种模式是追求绝对安全结果无论如何努力也达不到绝对安全而弄得自己痛苦不堪。另一种是在采取了一定的防护措施后便满足地认为已达到绝对安全于是放松警惕最后遭受安全威胁的攻击损失惨重。你不能就说喔因为实现了CSP所以我是安全的。我可以在漏洞清单中划掉跨站脚本因为它不会发生。你会发现自己和其他人一样也是按这种方式思考的。显而易见程序员们很容易按这种方式思考非黑即白非0即1非对即错。其实安全远没有这么简单。我们在Web开发工作中初期就遇到会这些问题并尝试从StackOverflow社区中能找到解决方案。跨源资源共享CORS你是否见到类似下面的错误信息No Access-Control-Allow-Origin header is present on the requested resource. Origin null is therefore not allowed access.你不是一个人在战斗你Google查询有人说用这个方法所有问题马上解决。太好了不是吗CORS是来保护你而不是伤害你的为了解释CORS是如何帮助你的让我们先从cookie说起特别是认证cookie。认证cookie是用来告诉后台程序你的登录状态它们自动随任何请求发送给后台程序。我们来假设你已经登录了Facebook账户且Facebook使用cookie认证。你点击链接bit.ly/r43nugi它重定向到恶意网站superevilwebsite.rocks。恶意网站superevilwebsite.rocks中的一段脚本代码向facebook.com后台程序发起请求你的认证cookie自动随请求发送给facebook.com后台程序。在非CORS的世界黑客可以在你毫不知情的情况下变更你的账户。只需要简单几步1、黑客在你的时间线上发帖帖子中包含bit.ly/r43nugi恶意链接2、你的朋友们点击了该恶意链接恶意脚本程序又在他们的时间线上发帖这个过程不断被重复在广度优先模式下直到黑客占领了全部的Facebook用户的时间线世界充斥着恶意网站superevilwebsite.rocks。 然而在CORS的世界Facebook将只允许来源自facebook.com的请求方可在后台程序中修改数据。换句话说他们会限制跨源资源共享。你可能会问我们可以修改请求文件头这样请求不就看起来是来自facebook.com吗你可以试试但不会成功的因为浏览器会忽略你的修改它会使用真正的来源信息。好了那如果恶意网站修改后台程序的请求呢在这种情况下你想绕过CORS但你还是不会得逞原因后台程序不能同时发送你的认证cookie。脚本必须在浏览器上执行才能获取到你存在浏览器上的cookie。内容安全策略CSP为了便于理解CSP我们先谈一下最常见的Web漏洞跨站脚本攻击简称XSSXSS即黑客在你的浏览器中注入JavaScript代码。你可能会想黑客会做什么红变绿吗我们假如黑客在你的浏览器成功中注入JavaScript代码到你正在访问的网站代码中。他们可能会做哪些邪恶的事情他们能冒充你向其他网站发送HTTP请求。这句不会翻囧他们能加script标签内嵌的一段JavaScript代码。他们能加script标签引用远程的JavaScript代码。他们能内嵌一个网页覆盖正常网页之上提示你输入密码。罄竹难书发挥你的想象力吧。CSP通过限制功能提供保护什么能在框架内打开。什么样式表可以被加载。哪些请求可以发送等等。那它时怎么工作的呢等你点击链接或在浏览器地址栏输入网址的时候浏览器发送GET请求。服务器返回HTTP头信息以及HTML内容。如果你对返回头信息是什么很好奇以谷歌Chrome浏览器为例打开浏览器开发者模式。括弧内为译者补充下同切换到“网络”标签访问网站facebook.com。你可能会看到如下返回头信息content-security-policy: default-src * data: blob:;script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* unsafe-inline unsafe-eval *.atlassolutions.com blob: data: self;style-src data: blob: unsafe-inline *;connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com self chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm;这些是facebook.com的安全内容策略。让我们调整成可读性强的格式。content-security-policy: default-src * data: blob:; script-src *.facebook.com *.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* unsafe-inline unsafe-eval *.atlassolutions.com blob: data: self; style-src data: blob: unsafe-inline *; connect-src *.facebook.com facebook.com *.fbcdn.net *.facebook.net *.spotilocal.com:* wss://*.facebook.com:* https://fb.scanandcleanlocal.com:* *.atlassolutions.com attachment.fbsbx.com ws://localhost:* blob: *.cdninstagram.com self chrome-extension://boadgeojelhgndaghljhdicfkmllpafd chrome-extension://dliochdbjfkdbacpmhlcpmleaejidimm;现在我们逐条分解这些指令。**default-src**限制所有其他没有显示列出的CSP指令。**script-src**限制脚本加载。**style-src**限制样式表加载。**connect-src**限制可以使用脚本接口如获取、XHR、ajax等的URL链接。注意远不止这3条指令还有更多的CSP指令。浏览器将读取CSP头信息并加载、渲染HTML文件时执行这些指令。如果恰当地设置指令浏览器将仅允许必要的操作。如果没有CSP头信息那么所有的操作都不会被限制。你可以想象这些指令全部替换成通配符*任何操作都将被允许。HTTPS 或 HTTP安全你肯定听说过HTTPS。人们可能会这么说为何我要关心一个我玩游戏的网站是否启用了HTTPS呢或者是这样滴。。。太疯狂了你的网站居然没有启用HTTPS。都2018年了别信其他人潜台词必须启用HTTPS。或许你听说谷歌Chrome浏览器自7月24日发布的Chrome 68起将把所有HTTP网站标记“不安全“。重点是HTTPS是加密的而HTTP不是。如果你不发送敏感信息是否加密有那么重要吗准备下一个缩写MITM它代表中间人攻击。如果你在咖啡馆使用无密码的公共Wi-Fi任何人都很容易地冒充成路由器使全部的请求和返回都通过该路由器。如果你的数据没有加密那么他们可以做任何事。比如在HTML, CSS, 或 JavaScript到达你的浏览器之前修改。假如你已经知道XSS那么可以做什么样的坏事。那么怎样才可以实现我的电脑和服务器之间通信加密而不被中间人攻击呢最初SSL协议就是为了解决这个问题而设计的1999年TLS协议取代SSL协议用在HTTPS上。至于TLS如何工作已经超出本文范围。HSTS协议让我们还用Facebook的头信息为例以下是一条很简洁的指令。strict-transport-security: max-age15552000; preloadmax-age标明HSTS在浏览器的生效时间。preload对本文不重要。这个头信息仅在用HTTPS访问时生效在用HTTP访问时会被忽略。原因很简单HTTPS时如此不安全很难被信任。让我们用Facebook的例子来描述下。你首次访问facebook.com而且知道HTTPS比HTTP安全所以你使用https://facebook.com。当浏览器接收到HTML收到头信息告知浏览器在后续访问中强制重定向到HTTPS网站。一个月后有人通过HTTP给你发送一个Facebook的链接比如http://facebook.com在max-age时间范围内浏览器会强制使用HTTPS防止潜在的中间人攻击。最后关于网络安全技术储备网络安全是当今信息时代中非常重要的一环。无论是找工作还是感兴趣黑客都是未来职业选择中上上之选为了保护自己的网络安全学习网络安全知识是必不可少的。如果你是准备学习网络安全黑客或者正在学习下面这些你应该能用得上①网络安全学习路线②20份渗透测试电子书③安全攻防357页笔记④50份安全攻防面试指南⑤安全红队渗透工具包⑥网络安全必备书籍⑦100个漏洞实战案例⑧安全大厂内部视频资源⑨历年CTF夺旗赛题解析一、网络安全黑客学习路线网络安全黑客学习路线形成网络安全领域所有的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。二、网络安全教程视频我们在看视频学习的时候不能光动眼动脑不动手比较科学的学习方法是在理解之后运用它们这时候练手项目就很适合了。三、网络安全CTF实战案例光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这里带来的是CTFSRC资料HW资料毕竟实战是检验真理的唯一标准嘛~四、网络安全面试题最后我们所有的作为都是为就业服务的所以关键的临门一脚就是咱们的面试题内容所以面试题板块是咱们不可或缺的部分这里我给大家准备的就是我在面试期间准备的资料。网安其实不难难的是坚持和相信自己我的经验是既然已经选定网安你就要相信它相信它能成为你日后进阶的高效渠道这样自己才会更有信念去学习才能在碰到困难的时候坚持下去。机会属于有准备的人这是一个实力的时代。人和人之间的差距不在于智商而在于如何利用业余时间只要你想学习什么时候开始都不晚不要担心这担心那你只需努力剩下的交给时间这份完整版的网络安全学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】