源栈培训:ASP.NET MVC-5:注入和欺骗

更多
2019年08月04日 22点15分 作者:叶飞 修改

病从口入:小心用户输入


Script注入(XSS)

我有一个idea:在我发布的内容里面写上一段JavaScript代码……

演示:略

  • MVC:抛异常,需要[AllowHtml]和@Html.Raw()
  • RazorPage:已编码,需要@Html.Raw()

为什么需要@Html.Raw()?富文本编辑(如:ueditor)和CSS样式。

后台如何过滤?两种策略:

  • 白名单:只允许使用白名单中的标签,推荐!
  • 黑名单:禁止黑名单中出现的标签

工具:正则匹配

  • Regex.Replace
  • Regex.Match


CSRF


Cross-Site Request Forgery:跨站点请求伪造

防御的核心在于除了用户的验证cookie以外,还要生成一个token,以确保链接/表单确实为服务器端生成。

如何生成token?

  • 生成一个随机数
  • 从用户密码中生成
  • ……

实现:

  • 操作类尽量使用Post(仅查询类使用Get)
  • 前台,Layout中传入,使用JavaScript附加
  • 后台,使用Filter进行封装。

和钓鱼网站的区别

MVC内置反欺骗(仅用于form表单)

在form表单中添加:

    @Html.AntiForgeryToken()

生成一个hiden input,记录了一个token。

MVC同时会向前台发送一个cookie,记录

在Action上标注

[ValidateAntiForgeryToken]
就可以通过验证 hiden input 和 cookie是否匹配,检验form表单是否为MVC自己生成的。



作业

使用富文本编辑器发布文章,确保发布的文章能够显示:段落(<p>)、加粗(<strong>)、斜体(<i>)、链接(<a>)的效果

在后台进行过滤,保证无法利用上述发布文章的功能进行脚本注入

完成点赞和踩的功能:

  1. 文章显示赞/踩的总数

  2. 同一篇文章一个用户只能赞或踩一次
  3. 自己不能赞/踩自己的文章

注意防止恶意用户进行CSRF骗赞骗踩。

使用@Html.AntiForgeryToken()和[ValidateAntiForgeryToken]保护帮帮币交易不被CSRF欺骗


作业点评

  • 不应该根据title取文章,应该在SaveChange()后获得Id并使用
  • Controller里直接使用return Redirect(),不要去new RedirectResult()
  • 仔细考虑是否使用int? id
  • 最好还是主动释放DbContext(using(){})
  • 直接使用new SelectList()将IEnumerable转换成SelectList
  • Server.MapPath()???
  • FixTag之类使用复杂正则表达式的,一定要写单元测试
  • ValidationSummary()
  • @Html.AntiForgeryToken()
  • JavaScript句尾加分号分隔
  • @Html.ActionLink() vs @Html.Action()
  • web.config中的connectionStrings
  • 注意不要提交无关的内容到版本管理仓库

作业点评

  • 用作key值的字符串最好用const或者readonly static
  • 命名不要随意
  • 数据库连接字符串
  • 使用GLB项目生成MessageHtmlTemplate
  • /SuggestHTML/Suggest  => /Suggest(/List/Index/All)





源栈培训 ASP.NET 安全 注入
赞: 201 踩: 2

打赏
已收到打赏的 帮帮币

你的 打赏 非常重要!
为了保证文章的质量,每一篇文章的发布,都已经消耗了作者 1 枚 帮帮币
没有“帮帮币”,作者无法发布新的文章。

全系列阅读
评论 / 0
叶飞的系列文章

源栈培训:ASP.NET全栈开发

飞哥的源栈培训:线上全程直播,免费收看;线下拎包入住,按周计费。本系列收录所有讲义(含视频录播地址)

编程那些事:菜鸟入门

大飞哥倾力之作,面向有意入行IT/开发/编程的初学者,欢迎任何形式的留言建议……

从包工头到程序猿

真实故事,讲述我在家装公司关门之后,如何转行成为一个程序猿的故事。(《折腾》第三卷)

《折腾》(卷一)青涩

时间段:从大学毕业到开始创业。离开青葱校园,涉世之初的那些往事……

《折腾》(卷二)风雨 之(1)工地

我一个完全的门外汉(无论装修还是管理),开始给黎叔装修房子。从踌躅满志,到四处碰壁;从一往直前,到左右为难……

《折腾》(卷二)风雨 之(2)胸怀

作为一个律师,接工程没签合同,被狠狠的坑了一把!年轻人暴烈的想要复仇,黎叔教他一个企业家的胸怀……

《折腾》(卷二)风雨 之(3)渠道

成立了公司,招聘了员工,开始大力的拓展业务,一个接一个的坑,摔倒了又爬起来……

《折腾》(卷二)风雨 之(4)视野

经历残酷现实的磨砺,终于明白:干啥事,都不能闭门造车,人要走出去,开阔视野……

未分类

系统自动生成的未分类系列

一锅大杂烩

从律师到包工头,从码农到写手,读书交友生活创业,各种零零碎碎,乱七八糟……

人人都是程序猿

计算机编程普及课程,视频:https://space.bilibili.com/55410301/#/channel/detail?cid=49491

全部
关键字



帮助

反馈