任何人都知道一个好的库,我可以在插入字符串之前运行它们,可以去掉 sql/javascript 代码?在jsp页面中运行。
理想情况下,lib 将是:
- 自由
- 轻的
- 便于使用
提前感谢 SO 社区,他们会很高兴地回复 :)
任何人都知道一个好的库,我可以在插入字符串之前运行它们,可以去掉 sql/javascript 代码?在jsp页面中运行。
理想情况下,lib 将是:
提前感谢 SO 社区,他们会很高兴地回复 :)
Apache Commons lang StringEscapeUtils 将为您提供一些帮助。它逃脱,不剥离。
http://commons.apache.org/lang/api/org/apache/commons/lang/StringEscapeUtils.html
编辑:转义可以使您免受注入攻击,因为它确保用户输入的数据不会作为代码执行,而是始终作为数据呈现给用户。
您需要依赖数据库 api 的机制来使用参数化查询。如果您首先动态构建一个 sql 字符串,然后想要清理已完成的查询字符串,那么您做错了。那只是自找麻烦。
编辑:重新阅读您的问题后,我似乎误解了您的要求。我坚持我最初的评论对于您问题的 sql 注入部分是准确的。为此,您肯定需要真正的查询参数。
至于过滤掉javascript,我认为还没有真正的标准方法。我知道 Jeff 在 SO 发布了他们在此处使用的代码,但我没有方便的链接。如果我能找到它,我会发布它。
看看OWASP 上的AntiSamy。我认为这可能是您正在寻找的。我目前不在 Java 中工作,所以我不能告诉你它是如何执行的。
您要说的是,对于添加到字符串中的每个可能条目,我必须首先删除“恶意”数据。是的,这是有道理的,因为我无法分辨哪个是作为输入添加的,什么是查询本身的一部分。
好的,我想我需要重新开始更改一些代码:) api 的问题仍然存在:)
c:out 标签默认转义 XML。这对于存储用户输入很方便,因为绑定的值仍然是用户的输入,但浏览器生成的源将使用转义条目。
为了防止 SQL 注入,请使用 PreparedStatement 对象。如果您正在使用一些持久层,请确保它正在使用 PreparedStatement 对象。对于恶意 HTML 和 JavaScript,请使用 . 默认情况下,这会转义 XML 字符。您还可以使用 fn tld 中的 JSTL 函数 escapeXml。
只是在这里改写其他人给出的建议:
OP 希望防止 SQL 和 JavaScript 注入攻击。
通过确保使用参数化查询/绑定变量向数据库提供用户输入,可以防止 SQL 注入攻击。在 Java 世界中,使用PMD(和PMD 规则)和Findbugs(这些规则默认内置在 Findbugs 中)将帮助您确定代码库中易受 SQL 注入攻击的位置。OWASP 有一篇关于防止 Java 中的 SQL 注入的好文章。
就脚本注入而言,防止执行攻击者注入的脚本的最安全方法是确保用户输入在用作输出时以编码格式显示 - 对于 Web 应用程序,这将是HTML 编码。这个 OWASP 页面向您展示了如何在 Java 中执行 HTML 编码。
如果您想保护您的应用程序免受 javascript 注入,则需要检测或挂钩以您的 javascript 作为参数的方法,对于 mongodb,eval() 方法可以在 mongo 服务器上执行 javascript。您可以按照下面的链接来减轻 ssjs 攻击。 https://www.sciencedirect.com/science/article/pii/S1568494619305022