本文目录一览:
什么是xss攻击?
一、什么是跨站脚本攻击
跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。通常将跨站脚本攻击缩写为XSS。
跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。
二、跨站脚本攻击的种类
从攻击代码的工作方式可以分为三个类型:
1、持久型跨站:最直接的危害类型,跨站代码存储在服务器(数据库)。
2、非持久型跨站:反射型跨站脚本漏洞,最普遍的类型。用户访问服务器-跨站链接-返回跨站代码。
3、DOM跨站(DOM XSS):DOM(document object model文档对象模型),客户端脚本处理逻辑导致的安全问题。
三、跨站脚本攻击的手段和目的
常用的XSS攻击手段和目的有:
1、盗用cookie,获取敏感信息。
2、利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。
3、利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。
4、利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。
5、在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果。
四、跨站脚本攻击的防御
XSS攻击主要是由程序漏洞造成的,要完全防止XSS安全漏洞主要依靠程序员较高的编程能力和安全意识,当然安全的软件开发流程及其他一些编程安全原则也可以大大减少XSS安全漏洞的发生。这些防范XSS漏洞原则包括:
1、不信任用户提交的任何内容,对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、REFER、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。尽量采用POST而非GET提交表单;对“”,“”,“;”,“””等字符做过滤;任何内容输出到页面之前都必须加以en-code,避免不小心把htmltag显示出来。
2、实现Session 标记(session tokens)、CAPTCHA(验证码)系统或者HTTP引用头检查,以防功能被第三方网站所执行,对于用户提交信息的中的img等link,检查是否有重定向回本站、不是真的图片等可疑操作。
3、cookie 防盗。避免直接在cookie中泄露用户隐私,例如email、密码,等等;通过使cookie和系统IP绑定来降低cookie泄露后的危险。这样攻击者得到的cookie没有实际价值,很难拿来直接进行重放攻击。
4、确认接收的内容被妥善地规范化,仅包含最小的、安全的Tag(没有JavaScript),去掉任何对远程内容的引用(尤其是样式表和JavaScript),使用HTTPonly的cookie。
跨站脚本攻击漏洞需要用到什么编程语言
这里有5种编程语言,可以对网络安全的问题有所帮助。
C和C++
如果是在网络安全领域,C和C++是相对重要的最基础的编程语言,这些语言提供了对底层IT基础设施(如RAM和系统进程)的访问,如果保护不好,黑客可以很容易地利用这些基础设施。
C编程语言是大多数操作系统的主干。它是一种简洁、灵活和高效的语言,可用于完成多种任务,如加密、图像处理和socket 网络。
从本质上讲,C++通常被认为是C的大哥,它是由crack、meth和steroids混合编译而成的。而C++是一种主要基于C的源代码的很棒的语言。有几个使用C++创建的网络安全程序。例如,Network Mapper,就是是用C+创建的。
下面是C+的创建者Bjarne Stroustrup的一句话:
"C使你很容易射中自己的脚;C+使它变得更难,但当你这样做时,它会把你的整个腿都炸掉。"
如果你具有使用C/C++编程语言的经验,你将知道如何应对针对计算环境中较低级别操作的攻击。
PYTHON
作为一种高级编程语言,Python越来越受到网络专家的欢迎。它之所以吸引人,主要是因为它代码的可读性、语法清晰和简单,以及大量库的可用性。
因此,无论你想做什么任务,你都可以使用Python轻松完成任务。例如,你可以使用该语言将TCP数据包发送到计算机,执行恶意软件分析,并创建入侵检测系统,而对第三方工具的依赖性最小。
然而,与C/C++不同,Python并不是底层的;因此,它可能无法为提供足够硬件资源可见性。
学习Python用于网络安全将使你在职业生涯中占据优势。你将具备编程技能,可以帮助你识别漏洞并发现如何解决它们。
JAVASCRIPT
JavaScript是一种高级编程语言,通常被称为Web的“通用语言”。JavaScript是支持Internet的核心技术。首先,它是为网页添加交互性的语言。尽管JavaScript最初仅在Web浏览器的客户端实现,但现在可以在其他类型的主机基础结构中使用该语言,例如数据库中的服务器端和PDF程序等离线应用程序。
因此,由于它的广泛使用,学习JavaScript可以让你比黑客领先一步。 你将了解网站和其他应用程序如何工作的概念以及用于抵御恶意用户的最佳设计。例如,跨站点脚本是一种基于JavaScript的攻击,涉及攻击者在Web应用程序中植入恶意代码。
如果你有使用JavaScript编程语言的经验,则可以防止发生此类攻击。
PHP
PHP是用于开发网站的服务器端编程语言。由于大多数网站都是使用PHP创建的,因此学习该语言可以让你了解如何抵御入侵者。
例如,DDoS(拒绝服务)攻击通常会尝试使Web应用程序对预期用户不可用。
借助PHP编程知识,再加上JavaScript等其他技术的技能,你可以实现可靠的解决方案来保护Web应用程序。
SQL
SQL(结构化查询语言)主要用于管理存储在数据库中的数据。由于当前数据存储系统的爆炸式增长,SQL被广泛用于维护和检索数据。
同样,黑客越来越多地编排语言来破坏或泄露存储的数据。例如,SQL注入攻击涉及利用SQL漏洞来窃取或修改数据库中保存的数据。因此,充分了解SQL语言对于网络安全至关重要。
总结
以上并不是网络安全最佳编程语言的详尽列表。根据你的具体用例,你可能会发现一种语言比其他语言更适合你的工作。
例如,如果你想专注于保护Web应用程序的前端,那么学习JavaScript可能是你理想的选择。
尽管如此,要成为一个全面的网络极客,你需要采用
如何正确防御xss攻击?
1、基于特征的防御。XSS漏洞和著名的SQL注入漏洞一样,都是利用了Web页面的编写不完善,所以每一个漏洞所利用和针对的弱点都不尽相同,这就是给XSS漏洞防御带来的困难,不可能以单一特征来概括所有XSS攻击。
传统的XSS防御在进行攻击鉴别时多采用特征匹配方式,主要是针对JavaScript这个关键词进行检索,但是这种鉴别不够灵活,凡是提交的信息中各有JavaScript时,就被硬性的判定为XSS攻击。
2、基于代码修改的防御。Web页面开发者在编写程序时往往会出现一些失误或漏洞,XSS攻击正是利用了失误和漏洞,因此一种比较理想的方法就是通过优化Web应用开发来减少漏洞,避免被攻击:
①用户向服务器上提交的信息要对URL和附带的HTTP头、POST数据等进行查询,对不是规定格式、长度的内容进行过滤。
②实现Session标记、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。
③确认接收的内容被妥善的规范化,仅包含最小的、安全的Tag,去掉任何对远程内容的引用,使用HTTP only的cookie。
3、客户端分层防御策略。客户端跨站脚本攻击的分层防御策略是基于独立分配线程和分层防御策略的安全模型。它建立在客户端,这是它与其他模型最大的区别。之所以客户端安全性如此重要,客户端在接受服务器信息,选择性的执行相关内容。这样就可以使防御XSS攻击变得容易,该模型主要由三大部分组成:
①对每一个网页分配独立线程且分析资源消耗的网页线程分析模块;
②包含分层防御策略四个规则的用户输入分析模块;
③保存互联网上有关XSS恶意网站信息的XSS信息数据库。