还剩2页未读,继续阅读
文本内容:
XSS等web安全漏洞的防范脚本安全电脑资料最近在ode社区,由@吴中骅的一篇关于XSS的文章,直接导致了社区的人开始在ode尝试各种攻击,之前nodeclub在上传图片的时候逻辑是这样的看上去好像没有问题,每个人上传的文件都存放在以用户UID命名的一个文件夹内,并且以当前的时间戳作前缀但是当有用户恶意构造输入的时候,问题就出现了当用户上传的文件filename为/../../xxx的时候,上传的文件就会rename到用户文件夹之外,导致用户可以替换现有系统上的任何文件这个漏洞相对来说非常的低级,但是后果却是最严重的,直接导致整个系统都可能被用户控制修复的方法也很简单关于XSS,在@吴中骅的文章中已经非常详细的描述了而ode社区中,用户发表话题和回复话题也是用的一个支持markdown格式的富文本器之前是没有做过任何XSS防范措施的,于是...你可以直接在里面写而markdown格式的内容也没有做URL有效性检测,于是各种样式的XSS又出来了在社区这个应用场景下,引入HTML标签只是为了进行一些排版的操作,而其他的样式定义等等都只会让整个界面一团糟,更别说还有潜在的XSS漏洞风险因此,其实我们是不需要支持用户输入HTML标签来进行内容排版的,一切都可以通过markdown来代替然后通过简单粗暴的HTMLescape,就可以消灭掉直接输入HTML导致的XSS风险然而这样粗暴的进行escape,会导致用户输入的代码里面的;这些特殊字符也被转义掉,不能正确显示,需要先将代码段提取出来保存,只转义非代码段的部分于是这个escape函数变成了这样而对于markdown生成的标签和标签中的href属性,必须要做URL有效性检测或者做xss的过滤,因为XSS的手段确实比较多,见XSSFilterEvasionCheatSheet因此能够做粗暴的HTMLescape是最安全的,但是并不是每一个地方都可以通过markdown来代替HTML代码,所以不是每一个地方都能用HTMLescape,这个时候就需要其他的手段来过滤XSS漏洞了XSS防范只能通过定义白___的形式,例如只允许标签,只允许hrefclassstyle属性然后对每一个可能造成XSS的属性进行特定的过滤现有的XSS过滤模块,一个是...。