如何最好地清理 Java webapp 中的输入

2022-09-01 16:03:34

我们使用jsp,servlets,beans和mysql数据库。我们不希望限制用户在表单域上输入的字符。那么,如何清理输入以及如何确保输出不会因恶意活动而更改。在发送输出时,我可以检查是否已发送额外的代码。就像假设有搜索输入字段一样 - 用户给出类似.有没有安特,我可以知道这是一个html标签。如果用户将额外的参数附加到链接字段,是否可以像之前和之后的检查一样,我可以为文档做一个额外的链接字段。<script>alert("I am here")</script>


答案 1

你真的应该允许用户输入尽可能少的HTML和/或javascript。验证和清理这些东西的一个很好的解决方案是使用一个现成的库,如OWASP AntiSamy

此外,请查看 OWASP 企业安全 API,了解开发人员构建安全 Web 应用程序所需的安全方法的集合。


答案 2

jsoup一个去帮助你解决这个问题。无论你做什么,都不要试图使用正则表达式或其他方式来解决这个问题,因为那样你就会遇到2个问题。:-)

有了 ,您只需要一小段代码:jsoup

String safe = Jsoup.clean(unsafe, Whitelist.basic());

您可以相当轻松地添加标记和属性,尽管我发现它不支持命名空间标记。Whitelist