随便讲讲XSS攻击

做为一个前端工程师,XSS漏洞不该该只是安所有门的工做。在项目上马的时候就应该对可能涉及的安全问题有所预防才是有一个好前端。- -
 
什么是XSS
•跨站脚本攻击(Cross-site scripting, XSS)
• 是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它容许恶意用户将代码注入到网页上,其余用户在观看网页时就会受到影响。这类攻击一般包含了HTML以及用户端脚本语言。
 
XSS分类
• 反射型
• 存储型
• DOM型
 
防治XSS,我的以为核心内容就是不能相信任何用户输入的数据。
因此凡是前端要操做用户数据的地方,所有要转义。
 
固然。简单一句话,固然不容易处理这样的状况。由于若是每个方法都要去作一个encode那真是程序员的灾难。
 
那就分状况讨论下。
 
咱们会在什么地方碰到XSS:
凡是数据能够被用户构造的位置。
1.用户输入数据,而后被输出。
若是用户输入<script>location.href='www.cnblog.com/bugluo'</script>,被转发围脖,嗯嗯。用户全跑我这来了。
因此咱们能够怎么作?
若,咱们使用smarty这样的后端模板。咱们能够在编译平台作相似上线前自动加encode方法的功能。
若,咱们使用前端直接生成html,拼接html时,注意用$.text()方法,而不要使用$.html(''),或者使用cratedom的方式。
 
2.富文本编辑器。
富文本编辑器很是容易出现一个问题,就是dom被构造,例如:
<a onclick="location.href='你懂的'"></a>
事件中:eval  setTimeout/setInterval    document.write   new Function()   String.fromCharCode   前端模板
 

有这么多xss攻击的漏洞地方,咱们该怎么防范呢?

1.不要相信用户的任何输入
2.过滤
3.转义
 
不要相信用户的任何输入:白名单机制,只有被容许的事件才可以去执行,只有被容许的内容才可以显示
过滤掉任何可能形成xss的内容。
将特殊的字符转义: $^*()+={}[]|/:<>.?'" 
 
文本过滤,因为XSS漏洞会慢慢被挖掘出来,绵绵不绝。因此白名单机制可以更好的知足防XSS的需求,可是会形成可配置性大大下降。
转义:
function smarty_modifier(str){
     $str = strval(str);
   return str_replace(array('\\','&',……,array('\\\\','$amp;',……),str)
}
直接上代码通俗易懂。
相关文章
相关标签/搜索