2015-04-01 532 views
0

我正在尝试创建一个servlet请求筛选器,它根据白名单字符筛选所有传入请求。http请求的白名单验证

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

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

任何帮助,将不胜感激提前

回答

0

实现模式匹配的机制,通过使用正则表达式来找到您的网址白名单模式字符..

感谢

关注这个link1

或者您可以尝试:

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

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

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

感谢,

〜CHANDAN

+0

谢谢Chandan的回复...正则表达式可以用来生成正则表达式,因为我是一个新手,我不知道哪些字符应该用于白名单验证.... – androidDev 2015-04-01 12:09:15

+0

〜欢迎androidDev,你可以给一个关于你的白名单的想法(你想要什么样的模式,规则) – 2015-04-01 12:54:45

+0

我正在使用struts框架,我想验证每个传入的请求在URL中,所以我正在寻找一个正则表达式,我可以使用它来进行url的白名单验证。 – androidDev 2015-04-01 17:53:42

0

的问题是,“恶意“是非常广泛的术语。你应该清楚自己想要保护什么类型的攻击,然后采取措施来防止这种攻击。

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

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

等等......

的一点是,没有银弹,以保护您免受所有恶意攻击媒介尤其不要在Servlet过滤器白名单某些字符。您应该知道潜在的恶意数据在哪里使用并根据其具体用途进行处理,因为不同的目标将具有不同的漏洞,并且需要不同的保护措施。

安全问题和措施的高级概述的良好开端形成对它们的保护是OWASP TOP TEN。然后我推荐一些由owasp提供的更详细的指南和资源。