XSS等web安全漏洞的防范.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
XSS等web安全漏洞的防范

XSS等web安全漏洞的防范 近在cnode社区,由@吴中骅的一篇关于XSS的文章,直接导致了社区的人开始在cnode尝试各种攻击。这里总结了一下这次碰到的一些问题与解决方案。,,,,,,,, 文件上传漏洞 ? 之前nodeclub在上传图片的时候逻辑是这样的: ? ??,,,,,,,, //用户上传的文件名 var,,,,,,,,filename,,,,,,,,=,,,,,,,,Date.now(),,,,,,,,+,,,,,,,,_,,,,,,,,+,,,,,,,,; //用户文件夹 var,,,,,,,,userDir,,,,,,,,=,,,,,,,,path.join(config.upload_dir,,,,,,,,,uid); //最终文件保存的路径 var,,,,,,,,savepath,,,,,,,,=,,,,,,,,path.join(userDir,,,,,,,,,filename); //将用户上传的文件从临时目录移动到最终保存路径 fs.rename(file.path,,,,,,,,,savepath,,,,,,,,,callback); ? 看上去好像没有问题,每个人上传的文件都存放在以用户UID命名的一个文件夹内,并且以当前的时间戳作前缀。但是当有用户恶意构造输入的时候,问题就出现了。当用户上传的文件filename为/../../xxx的时候,上传的文件就会rename到用户文件夹之外,导致用户可以替换现有系统上的任何文件。 ?这个漏洞相对来说非常的低级,但是后果却是最严重的,直接导致整个系统都可能被用户控制。修复的方法也很简单: ? ??,,,,,,,, var,,,,,,,,filename,,,,,,,,=,,,,,,,,Date.now(),,,,,,,,+,,,,,,,,_,,,,,,,,+,,,,,,,,; var,,,,,,,,userDir,,,,,,,,=,,,,,,,,path.join(config.upload_dir,,,,,,,,,uid); //获取最终保存到的绝对路径 var,,,,,,,,savepath,,,,,,,,=,,,,,,,,path.resolve(path.join(userDir,,,,,,,,,filename)); //验证 if,,,,,,,,(savepath.indexOf(path.resolve(userDir)),,,,,,,,!==,,,,,,,,0),,,,,,,,{ ?,,,,,,,,return,,,,,,,,res.send({status:,,,,,,,,forbidden}); } fs.rename(file.path,,,,,,,,,savepath,,,,,,,,,callback); ? 富文本编辑器的XSS ? 关于XSS,在@吴中骅的文章中已经非常详细的描述了。而cnode社区中,用户发表话题和回复话题也是用的一个支持markdown格式的富文本编辑器。之前是没有做过任何XSS防范措施的,于是...你可以直接在里面写: ? ??,,,,,,,, scriptalert(123);/script div,,,,,,,,onmouseover=alert(123)/div a,,,,,,,,href=javascript:alert(123);123/a ? 而markdown格式的内容也没有做URL有效性检测,于是各种样式的XSS又出来了: ? [xss][1] [xss][2] ![xss][3] [1]:,,,,,,,,javascript:alert(123); [2]:,,,,,,,,,,,,,,,,HYPERLINK,,,,,,,,/,,,,,,,,\l,,,,,,,,onclick=alert(123),,,,,,,,/#onclick=alert(123) [3]:,,,,,,,,,,,,,,,,HYPERLINK,,,,,,,,/img.jpg,,,,,,,,\l,,,,,,,,onmouseover=alert(123),,,,,,,,/img.jpg#onmouseover=alert(123) ? 在社区这个应用场景下,引入HTML标签只是为了进行一些排版的操作,而其他的样式定义等等都只会让整个界面一团糟,更别说还有潜在的XSS漏洞风险。因此,其实我们是不需要支持用户输入HTML标签来进行内容排版的,一切都可以通过markdown来代替。然后通过简单粗暴的HTML,,,,,,,,escape,就可以消灭掉直接输入HTML导致的XSS风险。 ? ? function,,,,,,,,escape(html),,,,,,,,{ ?,,,,,,,,return,,,,,,,,html.re

文档评论(0)

mk808606 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档