在使用“资源注入”工具进行扫描时,我遇到了一个漏洞。
我找不到解决这个问题的办法。下面是我使用的代码
Me.FileUploadImg1.SaveAs(Me.Server.MapPath("~") & "\“& System.Configuration.ConfigurationSettings.AppSettings("library_video") & "\”& "E“& EventID & "A”& HttpUtility.HtmlEncode(txtAlbumID.Value) & "\“&HttpUtility.HtmlEncode(仅文件))
该工具提出了以下解决方案:
修复建议:修复XSS最简单的方法是验证来自外部源(即用户、基础设施、外部实体或数据库系统)的所有信息。数据的验证确保数据不包含脚本。验证数据的主要方法有两种:过滤所有输入和转义所有输出。
过滤所有输入--解决此漏洞的最安全、可能也是最有效的方法--只接受被认为有效的数据,并拒绝其他所有内容,称为“正”或“白名单”筛选。例如,如果期望输入数据是数字的,那么通过拒绝任何不是的输入来确保是这样的。除了拒绝所有数据外,还可以使用一个清理例程,检查是否存在特殊字符,并将每个字符替换为另一个字符,例如空白。一个弱的替代积极过滤是一个“消极”或“黑名单”过滤。这是一种危险的策略,因为一组可能存在的不良数据可能是无限的。采用这种策略意味着一个人将不得不永远保持“已知的坏”字符和模式的列表,而且根据定义,一个人将得到不完整的保护。与过滤和转义相关的卫生行为通常包括丢弃、拒绝、替换、替换、翻译和编码受污染的输入或输出。转义所有输出有些场景我们不能依靠过滤来丢弃或拒绝数据,因为用户被要求提供包含特殊字符的输入内容。为了处理带有未诊断字符或脚本的特殊输入内容,通常建议使用转义机制,允许将编码的字符流转换为服务器或客户端无法意外执行的特殊字符集序列。
请在c#代码中为此问题提供一些解决方案。
发布于 2013-12-19 18:14:48
不知道您使用的是什么工具或它是如何工作的,我不知道它到底在寻找什么,但从错误信息来看,您似乎担心的是,您没有验证可能的脚本内容的输入,而是直接使用它。
它所关注的可能是AppSettings,但更有可能是txtAlbumID.Value。
您可能需要查看本文:http://www.drdobbs.com/windows/prevent-cross-site-scripting-in-aspnet-w/240148552
https://stackoverflow.com/questions/20688501
复制相似问题