我写了一个小工具,给出一个网站地址,然后从网站上获取一些元数据。我在这里的最终目标是在允许用户输入站点的网站中使用这个工具,然后这个实用工具会得到一些信息:标题、URL和描述。
我专门查看HTML中的某些标记,并对返回数据进行编码,因此我相信我将安全地免受XSS攻击。然而,我不知道是否还有任何其他攻击矢量,这让我开放。
发布于 2020-04-29 21:14:49
您所描述的是一种从外部网站返回基本信息的代理。我不认为这是一个奇怪的问题,而且我知道有几个攻击场景。
您的设计实际上允许设计SSRF (服务器端请求伪造)。这没什么大不了的,但可能会有严重的后果。例如,如果您在AWS中运行应用程序,就可以调用AWS元数据端点,在某些情况下,它可以授予攻击者对部分AWS环境的临时访问密钥。
SSRF还可用于访问您的内部网络、服务器的回送接口以及服务器白名单中的其他端点。您必须确保将内部地址列入黑名单(我将解析域并解析IP地址以匹配某些范围)。在使用AWS时,您必须阻止AWS元数据端点。
用户可以输入完整的URL吗?确保它们不能使用不同的模式,如文件://或smb://,或者它们可能从您的服务器读取本地文件。另外,请注意,如果您在网站上返回URL,当单击URL时,他们可能会使用javascript:-schema来执行XSS。
您是否使用XML解析器来解析外部HTML?如果是这样的话,请确保您不会受到XXE的攻击,并通过不允许外部实体来保护您的XML解析器。
不用说,我希望您不要将用户的输入附加到某些系统命令中,比如curl -s [URL],因为这将允许命令注入。这太蠢了,我不想提,但我见过有人这么做。
请注意,在JavaScript或HTML属性中显示来自外部网站的数据需要不同编码而不是HTML编码。
其余的取决于应用程序的体系结构。您是否将数据存储在数据库中?如果是这样,请确保您不会受到SQL注入等的影响。祝您好运!
https://security.stackexchange.com/questions/230530
复制相似问题