经过一番 996,精心打造的网站眼看就要部属上线了,但在网站正式上线之前,你有没有想过自己的网站是否安全吗?尽管你的网站用了很多高大上的技术,但是如果网站的安全性不足,无法保护网站的数据,甚至成为恶意程序的寄生温床,那前面堆砌了再多的美好也都成了枉然。

SQL 注入

在众多安全性漏洞中,SQL 注入绝对是最严重但也是最好处理的一种安全漏洞。在数据库执行查询句时,如果将恶意用户给出的参数直接拼接在查询句上,就有可能发生。

举个例子,假设原本某网站登录验证的查询句长这样:

strSQL = "SELECT * FROM users WHERE (name = '" + userName + "') and (pw = '"+ passWord +"');"

而恶意用户输入的参数为:

userName = "1' OR '1'='1";
passWord = "1' OR '1'='1";

由于代码中是直接将参数与查询句做字串做的拼接,所以 SQL 就成为了这样:

strSQL = "SELECT * FROM users WHERE (name = '1' OR '1'='1') and (pw = '1' OR '1'='1');"
// 相当于
strSQL = "SELECT * FROM users;"

这样一来,账号密码就形同虚设,甚至可以拿到整个数据库的结构(SELECT * FROM sys.tables)、任意修改、查询数据,整个网站的数据就全部泄露了。

不过解决方法也很简单,只要通过参数化查询来避免直接将参数与查询句拼接,并进行适当的输入检查、插入转义字符、严格设定程序权限,就能够有效避免 SQL 注入了。

XSS

XSS(跨站攻击)也叫JavaScript 注入,是现代网站最频繁出现的问题之一,它指的是网站被恶意用户植入了其他代码,通常发生在网站将用户输入的内容直接放到网站内容时。例如论坛、留言板等可以输入任意文字的网站,恶意用户如果写入一小段 <script>,并且前、后端都没有针对输入内容做字符转换和过滤处理,直接把用户输入的字串作为页面内容的话,就有可能遭到 XSS。

常见的 XSS 有几个类型:将恶意代码写入数据库,当数据被读取出来时就会执行的储存型 XSS;将用户输入的内容直接带回页面上的反射型 XSS;以及利用 DOM 的特性,各种花式执行恶意代码的DOM-based 型 XSS

储存型及反射型都很好理解,DOM-based 型就非常有意思了;可以参考OSWAP 整理的XSS Filter Evasion Cheat Sheet,绝大多数的 XSS 方式,都是通过各个元素的 background-image 属性或者元素上的各种事件回调来实现;其中特别值得注意的是 SVG,由于 SVG 中可以写入任意 HTML,还可以加上 onload 事件,如果把 SVG 当成普通图片处理,直接作为网站内容使用,如果遇到恶意用户的话,后果不堪设想。所以在上线上传图片功能时,务必要把 SVG 过滤掉!

避免 XSS 的方法其实也很简单,只要在数据输入输出时做好字符转换,使恶意代码不被执行,而是被解析成字符就可以了。

CSRF

CSRF(跨站请求伪造)是一种利用 Cookie 及 Session 认证机制进行攻击的手段;由于 Session 认证的其实不是用户本人,而是浏览器,那么只要通过网页DOM 元素可以跨域的机制,对已经得到认证的网站发出请求,就可以假冒用户,从而拿到敏感信息。

例如某家银行的转账 API 的URL 是这样的:

http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName

而恶意用户如果在网站中塞进一个 <img /> 的话:

<img src="http://www.examplebank.com/withdraw?account=Alice&amount=1000&for=Badman">

当不知情的用户浏览到攻击者的网站时,<img/> 会自动发出这个请求,如果用户登录银行的 Session 尚未过期,那么这个请求很可能就会被银行接受,最后会在用户本人不知情的情况下“被”转帐。

这种攻击方式可以与前面所说的 XSS 是相辅相成,例如在没有防范 XSS 的论坛网站中植入 <img/>,那么其 src 属性就应该是获取敏感信息的 API URL。

解决方法主要有以下几种:

  • 检查 Referer:在服务器端检查请求头中 Referer 的值,也就是检查请求的来源,如果是来自允许的网站,才会正常执行 API 的功能。
  • CSRF Token:在 Cookie 及请求发送的数据中都加上 csrftoken,并检查值是否相同,如果请求来源是自己的网站验证就会通过;反之,由于外部网站无法在代码中得到其他网站的 Cookie,因此无法在请求中带上 csrftoken
  • SameSite Cookie:在 Cookie 中加上 SameSite 属性,确保 Cookie 仅能在自己的网站使用。

JSON 劫持

JSON 劫持是利用现代网站前后端通过 API 进行数据交换的特性,只要能获得使用者权限,并调用获取资料的 API,再加上改写原生的 JavaScript 对象,就可以窃取用户的敏感信息。

获得权限的部分于 CSRF 相同,通过 <script> 可以跨域的特性直接使用浏览器用户的 Cookie;攻击者只需要在网页上通过 <script> 调用获取数据的 API 完成对数据的窃取。

例如:

Object.prototype.__defineSetter__('user',function(obj){for(var i in obj) {alert(i + '=' + obj[i]);}
});

当回传的数据中含有 user 属性时,由于 Setter 通过 Object.prototype.__defineSetter__ 改写了,user 中的值会被全部读取。

然而 Object.prototype.__defineSetter__ 可以修改原生对象所造成的问题,早已经在 ES4 中就被修复了,JSON 劫持也因此销声匿迹,但是从 ES6 开始又添加了 Proxy,使 JSON 劫持又再次成为可能:

<script> <script> Object.setPrototypeOf(__proto__,new Proxy(__proto__, {has: function(target, name) {alert(name.replace(/./g, function(c) {c = c.charCodeAt(0)return String.fromCharCode(c >> 8, c & 0xff)}))}})) </script>
<script charset="UTF-16BE" src="external-script-with-array-literal"></script>

看起来很恐怖,那么该如何解决呢?除了前面所说的 CSRF Token 外,许多大公司还采用了另一种有趣的解决方式。即 API 的响应内容开头为 for (;;);,这也是利用 了<script> 引入的 JavaScript 会立即执行的特性,把攻击者的网站卡死在循环里。

总结

除了文中提到的四种常见的网站安全漏洞外,一个网站还有很多细节需要考虑,例如不要用明码存储密码等敏感信息,针对来源 IP 做流量限制防止 DOS 等等。所以在进行网站开发时要保持安全意识,尽可能做好基本的防护措施。

网络安全前景

对于网络安全的发展与就业前景,想必无需我多言,作为当下应届生收入较高的专业之一,网络安全同样也在转行领域中占据热门位置,主要具备以下几点转行优势:

1.行业人才缺口大,至2027年我国网安人才缺口将达327万
2.知识体系友好,计算机及英语水平相对薄弱的同学也可学习上手
3.入行门槛低,大专学历即可学习就业
4.薪资起点高
5.就业选择范围广,一个专业包含十余种岗位

**岗位丰富,选择空间大,决定职业发展的高度,**这也是网络安全备受青睐的原因之一。本篇文章我将为大家规划该如何系统地学习网络安全这门专业,想要找工作和转行的小伙伴记得点赞和收藏呀~

学习规划

接下来我将给大家安排一个为期1个月的网络安全初级计划,当你学完后,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间8k——15k

初级

1、网络安全理论知识(2天)

①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(1周)

①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(1周)

①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(1周)

①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)

①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)

①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

当然,只给予计划不给予学习资料的行为无异于耍流氓,这里给大家整理了一份【282G】的网络安全工程师从入门到精通的学习资料包,需要的小伙伴可以点击**CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享**自取哦

①网络安全学习路线②20 份渗透测试电子书③安全攻防 357 页笔记④50 份安全攻防面试指南⑤安全红队渗透工具包⑥网络安全必备书籍⑦100 个漏洞实战案例⑧安全大厂内部教程

那么,到此为止,已经耗时1个月左右。你已经成功成为了一名“脚本小子”。那么你还想接着往下探索吗?

中级、高级

7、脚本编程学习(4周)

在网络安全领域。**是否具备编程能力是“脚本小子”和真正网络安全工程师的本质区别。**在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力。

零基础入门的同学,我建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习

搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP,IDE强烈推荐Sublime;

Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,没必要看完

用Python编写漏洞的exp,然后写一个简单的网络爬虫

PHP基本语法学习并书写一个简单的博客系统

熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选)

了解Bootstrap的布局或者CSS。

顶级网络安全工程师

这部分内容对于零基础的同学来说还太过于遥远了,就不展开细说了,这里我贴一个大概的路线。感兴趣的童鞋可以自行研究一下哦,当然你也可以加我蔚:yinjifei114和我一起互相探讨咨询。

常见的几个网络安全问题,你都知道吗?相关推荐

  1. 医疗行业如何应对网络安全问题?有什么合适的解决方案?

    医疗行业如何应对网络安全问题?医疗行业是当今最热门.产值最高的行业之一,因此,也成为网络攻击犯罪分子的主要目标之一,近年来医疗行业遭受网络攻击事件接连发生,给医疗行业带来巨大损失.医疗行业需要加强网络 ...

  2. 常见网络安全问题及处理(xss和csrf)

    1.XSS(Cross Site Script) 把token存储在cookie中,同时设置httpOnly. 2.CSRF(cross-site request forgery) 2.1.判断ref ...

  3. 我的服务器有硬件防火墙,而且只开了80端口,是不会有网络安全问题的

    常见脚本***及其防护技巧<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" ...

  4. 10个企业网络安全建议,解决99%的网络安全问题

    10个企业网络安全建议,解决99%的网络安全问题 互联网时代,企业做好网络安全防护非常重要,一旦网络受到恶意攻击,可能会对企业造成一大笔不必要的经济损失. 那么互联网企业该如何做好网络安全防护呢?小墨 ...

  5. 企业网络安全问题的痛点分析

    企业网络安全是当今企业面临的一个最大的挑战.随着企业数字化转型的推进,网络安全问题越来越成为企业的头等大事.但是,不同企业面临的网络安全痛点是不同的.本文将从以下几个方面来分析企业网络安全的痛点. 1 ...

  6. 10个企业网络安全建议,解决大部分的网络安全问题

    10个企业网络安全建议,解决99%的网络安全问题 互联网时代,企业做好网络安全防护非常重要,一旦网络受到恶意攻击,可能会对企业造成一大笔不必要的经济损失. 那么互联网企业该如何做好网络安全防护呢?小墨 ...

  7. 10个企业网络安全建议,解决的网络安全问题

    互联网时代,企业做好[网络安全](https://www.zhuanqq.com/)防护非常重要,一旦网络受到恶意攻击,可能会对企业造成一大笔不必要的经济损失. 那么互联网企业该如何做好[网络安全]( ...

  8. 面对日益严峻的网络安全问题,CDN可以做什么?

    简介:在我们享受着互联网提供的更便利.更多元服务的同时,隐匿在网络身处的各类安全问题也日益严峻.在去年,阿里云云安全监测到云上DDoS攻击发生近百万次,应用层DDoS(CC攻击)成为常见的攻击类型,攻 ...

  9. 车联网空间巨大 解决网络安全问题乃当务之急

    经济水平的提升以及科学技术的发展,汽车日益成为生活中不可缺少的一部分,而车联网作为在车载环境中为车主解决问题的工具也备受关注. 所谓车联网,是指由车辆位置.速度和路线等信息构成的巨大交互网络,能够实现 ...

最新文章

  1. AWS — AWS 上的 5G 专网部署模式
  2. 光有面罩不是能防护的
  3. python的基本语法if语句_Python基础之条件控制操作示例【if语句】
  4. java随机生成数字代码,详解系列文章
  5. String 源码探究
  6. 卡巴斯基重新激活试用版的方法
  7. python百度ai实现身份证识别_python利用百度AI实现文字识别功能
  8. 如何给PDF加水印?PDF加水印教程
  9. java验证码问题(不区分大小写)升级版,输入不正确则一直输入
  10. 互联网史话----十亿美金之51
  11. 正则匹配手机号和座机号包括分机号
  12. 易语言 超文本浏览框
  13. 7个实用的Python自动化代码,别再重复造轮子了!
  14. 小米手机设备锁定怎么强制解除
  15. 【Unity 02】地形Terrain
  16. ESP8266/32 (Arduino)驱动SHT30获取温湿度
  17. 打造有企业特色的ERP
  18. python tell_Python 文件 tell() 使用方法及示例
  19. 自动驾驶外卖上线,美团即将配送一切-1
  20. 孤岛危机 教程:使用Voxel技术创建地形

热门文章

  1. Numpy之tile用法
  2. 计算机长时间不开机在开机打不开,电脑长时间不用了,开机后,不启动怎么回事? – 手机爱问...
  3. ubuntu设置自定义分辨率(3步)
  4. 宏基因组分析步骤Linux,为什么宏基因组数据分析比较难?
  5. Lua 快速入门(一)——基础语法
  6. 用while循环语句 做1到10的数字竞猜
  7. 什么是肉鸡服务器,黑客说的肉鸡正确解释
  8. C++中带有空尖括号的template <>
  9. 以太网交换机的自学习功能
  10. 产品经理如果做好市场调研