从互联网发展开始,各种网络安全问题也就伴随而生。近些年来有很多网站遭到攻击,如新浪微博遭XSS攻击,双十一阿里云遭受上亿次的攻击等等。
常见的攻击与防御
XSS攻击,它和SQL注入攻击构成网站应用攻击最主要的两种手段,全球大约70%的Web应用攻击都来自XSS攻击和SQL注入攻击。此外,常用的Web应用还包括CSRF、Session劫持等手段。
XSS攻击
XSS攻击又称CSS,全称Cross Site Script (跨站脚本攻击),其原理就是攻击者像有XSS漏洞的网站注入恶意HTML脚本,在用户浏览网页时,这段恶意的HTML 脚本会自动执行,从而达到攻击的目的。
常见的XSS攻击类型:
反射型,通过在请求地址上加入恶意的HTML代码
dom型 ,通过一些API向网站注入恶意HTML
持久型,将恶意代码内容发给服务器,服务器没过滤就存储到数据库中了,下次再请求这个页面时就会从数据库中读取出恶意代码拼接到页面HTML上
1、反射型XSS攻击
攻击步骤:
1、攻击者构造出特殊的URL,其中包含恶意代码。
2、当用户打开带有恶意代码的URL时,网站服务端将恶意代码从URL中取出,拼接在HTML中返回浏览器,之后用户浏览器收到响应后解析执行混入其中的恶意代码。
3、恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户行为,调用目标网站接口执行攻击者指定的操作。
常见于通过 URL 传递参数的功能,如网站搜索、跳转等。由于需要用户主动打开恶意的 URL 才能生效,攻击者往往会结合多种手段诱导用户点击。
举个栗子:
新浪微博以前被攻击就是一种反射型XSS攻击。攻击者发布的微博中有一个含有恶意脚本的URL,用户点击该URL,脚本会自动关注攻击者的新浪微博ID,发布含有恶意脚本URL的微博,攻击就被扩散了。
现实中,攻击者可以采用XSS攻击,偷取用户Cookie、密码等重要数据,进而伪造交易、盗窃用户财产、窃取情报
2、存储型XSS攻击
攻击步骤:
1、攻击者将恶意代码提交到目标网站的数据库中
2、用户打开网站时,网站服务端将恶意代码从数据库中取出,拼接在HTML中返回浏览器
3、用户浏览器收到响应后解析执行混入其中的恶意代码,恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户行为,调用目标网站接口执行攻击者指定的操作。
常见于带有用户保存数据的网站功能,比如论坛发帖、商品评价、用户私信等等。
反射型 XSS 跟存储型 XSS 的区别是:存储型 XSS 的恶意代码存在数据库里,反射型 XSS 的恶意代码存在 URL 里。
DOM型XSS
攻击步骤:
1、攻击者构造出特殊的URL,其中包含恶意代码
2、用户打开带有恶意代码的URL,用户浏览器打开带有恶意代码的URL,之后用户浏览器收到响应后解析执行,前端JS取出URL中的恶意代码并执行
3、恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户行为,调用目标网站接口执行攻击者指定的操作。
DOM 型 XSS 跟前两种 XSS 的区别:
DOM 型 XSS 攻击中,取出和执行恶意代码由浏览器端完成,属于前端 JavaScript 自身的安全漏洞,而其他两种 XSS 都属于服务端的安全漏洞。
XSS的防御手段主要有两种:
消毒
HttpOnly
XSS的防御-消毒
XSS攻击者一般都是通过在请求中嵌入恶意脚本达到攻击的目的,这些脚本是一般用户输入中不使用的,如果进行过滤和消毒处理,即对某些html危险字符转义。
如 “>” 转义为“>” 、“<”转义为 “<”等,就可以防止大部分攻击。
为了避免对不必要的内容错误转义,如“3<5”中的 “<” 需要进行文本匹配后再转义,如 “
事实上,消毒几乎是所有网站最必备的XSS防攻击手段。
XSS的防御-HttpOnly
浏览器禁止页面 JavaScript访问带有HttpOnly 属性的敏感 Cookie。
HttpOnly并不是直接对抗XSS攻击的,而是防止XSS攻击者窃取Cookie,就算完成XSS注入后也无法窃取此Cookie属性,防止冒充用户提交请求。
注入攻击
注入攻击主要有两种形式:
SQL注入攻击
OS注入攻击
SQL注入攻击
攻击者在HTTP请求中注入恶意SQL命令(drop table users;),服务器用请求参数构造数据库SQL命令时,恶意SQL被一起构造,并在数据库中执行。
攻击者获取数据库表结构信息的手段:
开源,比如一些开源的博客数据库表是公开的,攻击者可以直接获得。
错误回显,如果网站开启错误回显,即服务器内部500错误会显示到浏览器上。攻击者通过故意构造非法参数,使服务端异常信息输出到浏览器端,为攻击猜测数据库表结构提供了便利。
盲注,网站关闭错误回显,攻击者根据页面变化情况判断SQL语句的执行情况,据此猜测数据库表结构。
预防SQL注入
消毒,和防XSS攻击一样,请求参数编码是一种比较简单粗暴又有效的手段。通过正则匹配,过滤请求数据中可能注入的SQL,如“drop table”、“\b(?:update\b.?\bset|delete\b\W?\bfrom)\b”等
参数绑定,使用预编译手段,绑定参数是最好的防SQL注入方法。目前许多数据访问层框架,如IBatis,Hibernate等,都实现SQL预编译和参数绑定,攻击者的恶意SQL会被当做SQL的参数,而不是SQL命令被执行。
除了SQL注入,攻击者还根据具体应用,注入OS命令、编程语言代码等,利用程序漏洞,达到攻击目的。
CSRF攻击
CSRF(Cross Site Request Forgery,跨站点请求伪造),是一种劫持授信用户向服务器发送非预期请求的攻击方式,也就是以合法用户的身份进行非法操作。
攻击者会诱导受害者访问第三方网站,利用受害者获得的被攻击网站的凭证来冒充正常用户对被攻击网站进行某些操作的目的。
如转账交易、发表评论等。CSRF的主要手法是利用跨站请求,在用户不知情的情况下,以用户的身份伪造请求。
其核心是利用了浏览器Cookie或服务器Session策略,盗取用户身份
CSRF的防御
CSRF的防御手段主要是识别请求者身份,防止第三方网站进行冒充,主要有下面几种方法:
尽量POST,限制GET
GET接口太容易被拿来做CSRF攻击,看第一个示例就知道,只要构造一个img标签,而img标签又是不能过滤的数据。接口最好限制为POST使用,GET则无效,降低攻击风险。
当然POST并不是万无一失,攻击者只要构造一个form就可以,但需要在第三方页面做,这样就增加暴露的可能性。
表单Token
CSRF是一个伪造用户请求的操作,所以需要构造用户请求的所有参数才可以。
表单Token通过在请求参数中增加随机数的办法来阻止攻击者获得所有请求参数:
在页面表单中增加一个随机数作为Token,每次响应页面的Token都不相同,从正常页面提交的请求会包含该Token值,而伪造的请求无法获得该值,服务器检查请求参数中Token的值是否存在并且正确以确定请求提交者是否合法。
验证码
相对说来,验证码则更加简单有效,即请求提交时,需要用户输入验证码,以避免在用户不知情的情况下被攻击者伪造请求。
Referer check
HTTP请求头的Referer域中记录着请求来源,可通过检查请求来源,验证其是否合法。很多网站使用这个功能实现图片防盗链(如果图片访问的页面来源不是来自自己网站的网页就拒绝)
远程监控电脑屏幕用什么软件?这些软件值得一试
如今,随着网络办公和团队合作的日益普及,实时监控电脑屏幕已成为确保工作效率和信息安全的有效途径。以下是一些在远程监控电脑屏幕方面表现出色的软件,能够满足不同场景的规定。1、TeamViewerTeamviewer是世界著名的远程桌面控制软件,页面简易,操作简便,联接平稳。此系统支持多种操作系统,从而实现远程访问、远程支...
U盘管理软件有哪些?探索U盘管理软件的多样世界
在数字时代,U盘作为便携式存储设备,在日常工作和学习中发挥着重要作用。然而,如何有效地管理U盘并确保其安全性和便利性已成为许多用户关注的焦点。今天,让我们一起探索那些优秀的U盘管理软件,它们将给您的数字生活带来前所未有的便利。1、PKu盘卫士 PKU盘是一款专业的U盘安全检测软件,可以实时监控U盘的安全状态,并评估电脑...
电脑实时监控软件哪款好?为您精选几款高效工具
在当今数字化飞速发展的时代,电脑已经成为我们生活和工作中不可或缺的工具。为了确保公司的信息安全,提高工作效率,选择合适的电脑实时监控软件至关重要。本文将为您推荐几款高效实用的电脑实时监控软件,帮助你更好地掌握员工工作动态,提升团队效率。一、安企神软件软件特点:综合监控功能:安企神软件凭借其综合监控管理功能脱颖而出,可以...
局域网监控软件可以监控外网吗?一文解析
如今,随着数字办公的日益普及,局域网监控软件已经成为企业网络管理不可或缺的一部分。然而,局域网监控软件能否监控外网一直困扰着许多企业网络工程师。本文将深入探讨这一问题,分析局域网监控软件在外网监控中能力与局限性。一、局域网监控软件的主要功能局域网监控软件是一种基于桌面管理软件和监控系统的综合监控工具。它通常具有以下基本...
安企神网络安全准入系统
安企神软件网络安全准入系统是一种高效、灵活、易于管理的网络密钥管理解决方案,旨在为公司网络环境提供全面的安全保障。通过身份认证、健康体检和安全设置评定,此系统保证只有授权的设备与用户才能浏览公司的内部网络资源,进而最大限度地降低安全隐患。一、网络安全准入系统主要功能1、用户身份认证安企神网络准入系统选用严格的身份认证机...