http请求的白名单验证

时间:2015-04-01 10:55:42

标签: java xss servlet-filters whitelist owasp

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

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

有谁知道应该使用哪些白名单字符来过滤任何HTTP请求字符串?

任何帮助将不胜感激

先谢谢

2 个答案:

答案 0 :(得分:0)

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

按照 link1

进行操作

或者您可以尝试:

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

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

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

谢谢,

<强>〜CHANDAN

答案 1 :(得分:0)

问题是“恶意”是非常广泛的术语。你应该清楚地知道你想要保护哪种类型的攻击,然后采取措施来防止它。

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

  1. Url param用于确定重定向目标。用户可以使用此功能将受害者导航到恶意网站,该网站会掩盖您的网站,但会窃取用户凭据,提供虚假凭据等。在这种情况下,您应该构建您的应用程序所期望的允许目标的白名单,并禁止其他人。请参阅OWASP top TEN - Unvalidated redirects and forwards
  2. 您将数据从url param保存到DB。您应该使用参数化查询来阻止SQL注入。 See OWASP SQL injection Cherat Sheet,
  3. Url param数据将显示为html。您应该通过一些已经过验证的清洁工具(例如OWASP html sanitizerAntiSamy)来清理您的HTML,以防止Cross Site Scripting
  4. 等等......

    关键是,没有银弹可以保护您免受所有恶意攻击媒介的侵害,特别是不能通过将servlet过滤器中的某些字符列入白名单来保护您。您应该知道在哪里使用潜在的恶意数据并在考虑其特定用途时对其进行处理,因为不同的目标将具有不同的漏洞,并且需要不同的保护措施。

    安全问题的高级概述的良好开端以及针对这些问题采取措施的措施是OWASP TOP TEN。然后我推荐一些由owasp提供的更详细的指南和资源。