我已经在我的服务器上运行了安全扫描并收到了一些 CRLF 漏洞利用警告。
因此,按照建议,我已经清理了所有查询参数输入,如下所示。
var encodedStringSafeFromCRLF = Server.UrlDecode(Request.QueryString["address"])
.Replace("\r", string.Empty)
.Replace("%0d", string.Empty)
.Replace("%0D", string.Empty)
.Replace("\n", string.Empty)
.Replace("%0a", string.Empty)
.Replace("%0A", string.Empty);
假设一个真正的用户通过“地址”查询参数向我发送地址。
例子 -
https://mywebsite.com/details?instId=151711&address=24%20House%20Road%0aSomePlace%0aCountry
由于将从上述字符串中删除“%0A”,因此地址现在将变为“24HouseRoadSomePlaceCountry”,这不是我的预期。
我应该如何处理?如果我对 CRLF 进行代码更改,这会改变输入的解释方式。如果输入字符串没有被清理,那么它将打开我的服务器进行 CRLF 攻击。
这里有什么建议吗?