【发布时间】:2020-04-13 14:16:25
【问题描述】:
尝试在 javascript 中运行以下代码时出现 sql 注入错误。我正在尝试使用参数或某些占位符来更新此方法以绕过注入错误,但我不确定。问题是,由于要创建一个安全的网站,下面连接为“i”的变量可以用一个参数替换,这样网站在从数据库中选择记录时就不会受到攻击。我已经在 php 中看到了对这种注入的修复,就像下面文章中的一个试图了解如何在 Javascript 中解决这个问题。在下面的“我”可能是“名字”。即,Select name as overday_disolay from country,取用户在表单中输入的名称,并将占位符“i”替换为用户提供的“名称”。下面的文章解释了更多,但它不是 javascript 中的修复(我不能使用文章中使用的相同功能,所以我需要在 Javascript 中解决)。应用程序抛出注入错误。
https://www.acunetix.com/websitesecurity/sql-injection/
function getUnionDataSql()
{
var sql = "";
sql += " SELECT DISTINCT "+ i+ " AS overday_display FROM country UNION"
}
【问题讨论】:
-
绕过?为什么不修复代码?
-
JavaScript 在哪里执行? Node.js?
-
@DanMcGhan 该脚本嵌入在 xml 中并输出到 jsp,因为我使用的应用程序是基于 Java 的。不确定您是否听说过“Archibus”。是的,我仍然可以使用 Java 来运行 sql 语句并调用 java 类作为工作流,但是这次脚本是在 javascript 中,我只想能够在 javascript 中获得一个函数,它允许我使用参数而不是变量在我的 sql 语句中
-
看看这个,如果它回答了你的问题,请告诉我:github.com/oracle/node-oracledb/issues/946 适用于 Node.js,但同样的规则适用于任何地方。
-
@DanMcGhan 对此表示感谢。这可能会有所帮助,但我最终通过在内部更新应用程序中的配置找到了出路。
标签: javascript sql oracle parameters code-injection