XSS,跨站脚本攻击。html
在接受不肯定输入内容(如第三方站点消息,URL参数,用户建立的文本批注等)时,在使用前对数据进行验证而且在展现时进行适当的编码是必不可少的,不然,可能会有恶意用户对网站进行攻击,轻者只是传递不规范的数据,严重的可能攻击服务器,扰乱网站正常运行,如,注入SQL脚本清除服务器上全部数据等。跨域
一般编写过滤器验证用户输入时,过滤器应该是基于白名单(已知的安全结构)配置编写,容许白名单经过,不容许其余输入;而基于黑名单(已知的不安全结构)配置编写,即容许除了黑名单以外的全部输入,是不安全的,由于还有许多未知的不安全事物。安全
一般咱们根据URL中的指定参数,返回给用户不一样页面,提供给用户以下导航:服务器
<ul> <li><a href="blog.jhss.com?id=Home">Home</a> <li><a href="blog.jhss.com??id=About">About Site</a> <li><a href="blog.jhss.com??id=Account">My Account</a> </ul>
如上,若以上URL没有编码直接展现给用户,恶意攻击者能够截断URL并插入一个script
元素:函数
http://blog.jhss.com/?id=%3Cscript%3Ealert%28%27Oh%20no%21%27%29%3C/script%3E
若其余用户访问这个URL页面,则会执行注入的script标签内的任意脚本,恶意者能够指定恶意代码,窃取用户信息。网站
还有不少方式被用来欺骗站点执行注入的代码,以下是咱们应该考虑的方面:编码
<img>
元素,若是容许使用onload
属性,则攻击者可使用onload
属性添加回调函数执行任意指定代码。<base>
元素时,意味着当前页面全部<script>
元素指向的相对地址都会被<base>
指定的值拦截,而且页面中全部的表单提交都会被重定向到恶意站点。CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,一般缩写为 CSRF或者 XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本( XSS),但它与XSS很是不一样,而且攻击方式几乎相左。XSS利用站点内的信任用户,而 CSRF则经过假装来自受信任用户的请求来利用受信任的网站。与 XSS攻击相比, CSRF攻击每每不大流行(所以对其进行防范的资源也至关稀少)和难以防范,因此被认为比 XSS更具危险性。
若站点容许用户提交表单,如申请修改密码,进行购物结算等,就必须肯定该次请求是用户主动发起,而不是别的站点诱骗用户进行请求的,这个问题是由于HTML
中表单是容许跨域提交的。code
站点为了防止这类攻击,主要能够从两方面进行:htm
tokens
)Origin
头,即请求来源提供用户界面给用户操做,支持用户进行交互的页面,有时候恶意者会诱骗用户激活某些动做,而后对点击的连接进行劫持,引导到恶意网站,进行某些危险交互,这也是咱们须要关注的。对象
要避免这些状况,对于一些不须要展现在frame
窗口内的站点,只容许不在frame
窗口时才展现用户界面,如经过检测window
对象及其top
属性值。
原文连接: HTML应用安全