http请求的白名单验证



我正在尝试创建一个servlet请求过滤器,它根据白名单字符过滤任何传入的请求。

我只想接受那些与白名单模式匹配的字符,以避免攻击者以脚本或修改URL的形式执行任何恶意代码。

有人知道哪些白名单字符应该用于过滤任何HTTP请求字符串吗?

如有任何帮助,将不胜感激

提前感谢

使用RegEx实现模式匹配机制,从URL模式中查找白名单字符。。

遵循链接1

或者您可以尝试:

if (inputUrl.contains(whiteList)) {
  // your code goes here
}

或者,如果您需要知道它发生在哪里,您可以使用indexOf:

int index = inputUrl.indexOf(whiteList);
if (index != -1) // -1 means "not found"
{
    ...
}

谢谢,

~ Chandan

问题是"恶意"是一个非常宽泛的术语。你应该清楚地知道你试图保护哪些类型的攻击,然后采取措施防止它

一般情况下,您不能指定需要过滤掉的字符集,您需要知道您在url中的输入将在哪个域中使用。通常危险的不是url本身,而是url参数,这些参数由用户提供,然后由应用程序解释。根据应用程序将如何使用此输入,您需要采取特定的预防措施。例如:

  1. Url参数用于确定重定向的目标。用户可以使用它将受害者导航到恶意网站,该网站伪装成你的网站,但会窃取用户提供虚假凭据的凭据,等等。在这种情况下,你应该构建你的应用程序所期望的允许目的地的白名单,并禁止其他人。请参阅OWASP top TEN-未验证的重定向和转发
  2. 您将数据从url参数保存到DB。您应该使用参数化查询来防止SQL注入。参见OWASP SQL注入Cherat表
  3. Url参数数据将显示为html。您应该使用一些已经验证过的消毒剂(如OWASP html消毒剂或AntiSamy)对html进行消毒,以防止跨站点脚本

等等…

关键是,没有什么灵丹妙药可以保护您免受所有恶意攻击,尤其是不能在servlet过滤器中白名单某些字符。您应该知道潜在的恶意数据在哪里使用,并在处理时考虑到其具体用途,因为不同的目标会有不同的漏洞,需要采取不同的保护措施。

OWASP TOP TEN是安全问题高级别概述和防范措施的良好开端。然后,我推荐一些owasp提供的更详细的指南和资源。

相关内容

  • 没有找到相关文章

最新更新