问题标签 [sql-injection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
2673 浏览

sql-injection - 参数化的 SQL 列?

我有一些代码利用参数化查询来防止注入,但我还需要能够动态构造查询,而不管表的结构如何。这样做的正确方法是什么?

这是一个示例,假设我有一个包含名称、地址、电话列的表。我有一个网页,我在其中运行Show Columns并使用它们作为选项填充选择下拉列表。

接下来,我有一个名为Search的文本框。此文本框用作参数。

目前我的代码看起来像这样:

不过,我从中得到一种恶心的感觉。我使用参数化查询的原因是避免使用escape。此外,转义可能不是为转义列名而设计的。

我怎样才能确保这按我的意图工作?

编辑: 我需要动态查询的原因是模式是用户可配置的,我不会去修复任何硬编码的东西。

0 投票
7 回答
2026 浏览

security - 在 Web 开发期间,我将花费多少时间在用户输入验证上?

我是在网络上开发东西的新手。到目前为止,我花了很多时间(50% 左右)来尝试防止坏人将诸如 sql 注入之类的东西放入我的输入表单并在服务器端验证它。这是正常的吗?

0 投票
6 回答
70085 浏览

php - htmlspecialchars 和 mysql_real_escape_string 是否可以防止我的 PHP 代码被注入?

今天早些时候,有人问了一个关于Web 应用程序中的输入验证策略的问题。

在撰写本文时,最佳答案建议PHP仅使用htmlspecialcharsand mysql_real_escape_string

我的问题是:这总是足够吗?还有更多我们应该知道的吗?这些功能在哪里分解?

0 投票
7 回答
1365 浏览

java - 在 Java/JSP 代码中查找潜在的 SQL 注入问题

我正在为一个拥有大量遗留代码库的客户工作,该代码库由各种基于 Java en JSP 的应用程序组成。

大多数查询是使用自制的“orm”系统完成的。一些应用程序使用普通的旧 JDBC。一些应用程序基于 Hibernate(是的,带有加号的 HQL 构建也是一个潜在问题)。一些较旧的应用程序完全用 JSP 编写。

我手动发现了几个 SQL 注入错误。但我真的可以使用某种工具来寻找潜在的弱点。

有任何想法吗?

0 投票
18 回答
613540 浏览

php - 如何使用 PHP 清理用户输入?

是否有一个包罗万象的功能可以很好地清理用户输入以进行 SQL 注入和 XSS 攻击,同时仍然允许某些类型的 HTML 标记?

0 投票
7 回答
238717 浏览

php - PDO 准备好的语句是否足以防止 SQL 注入?

假设我有这样的代码:

PDO 文档说:

准备好的语句的参数不需要引用;司机为您处理。

这真的是我需要做的一切来避免 SQL 注入吗?真的那么容易吗?

如果它有所作为,您可以假设 MySQL。另外,我真的只是对使用准备好的语句来对抗 SQL 注入感到好奇。在这种情况下,我不关心 XSS 或其他可能的漏洞。

0 投票
18 回答
83683 浏览

sql - 我可以通过转义单引号并用单引号包围用户输入来防止 SQL 注入吗?

我意识到参数化 SQL 查询是在构建包含用户输入的查询时清理用户输入的最佳方式,但我想知道接受用户输入并转义任何单引号并用单引号包围整个字符串有什么问题。这是代码:

用户输入的任何单引号都将替换为双单引号,这消除了用户结束字符串的能力,因此他们可能键入的任何其他内容,例如分号、百分号等,都将成为字符串的一部分,并且实际上并未作为命令的一部分执行。

我们使用的是 Microsoft SQL Server 2000,我相信单引号是唯一的字符串定界符,也是转义字符串定界符的唯一方法,因此无法执行用户输入的任何内容。

我看不出有任何方法可以对此发起 SQL 注入攻击,但我意识到,如果这在我看来是防弹的,那么其他人早就想到了,这将是常见的做法。

这段代码有什么问题?有没有办法通过这种清理技术进行 SQL 注入攻击?利用此技术的示例用户输入将非常有帮助。


更新:

我仍然不知道有什么方法可以有效地对这段代码发起 SQL 注入攻击。一些人建议反斜杠将转义一个单引号并留下另一个以结束字符串,以便将字符串的其余部分作为 SQL 命令的一部分执行,我意识到这种方法可以将 SQL 注入MySQL 数据库,但在 SQL Server 2000 中,唯一的方法(我已经能够找到)转义单引号是使用另一个单引号;反斜杠不会这样做。

除非有办法阻止单引号的转义,否则用户输入的其余部分都不会被执行,因为它们都将被视为一个连续的字符串。

我知道有更好的方法来清理输入,但我真的更有兴趣了解为什么我上面提供的方法不起作用。如果有人知道针对这种清理方法发起 SQL 注入攻击的任何特定方法,我很乐意看到它。

0 投票
5 回答
486 浏览

php - 全面的服务器端验证

我目前有一个相当强大的服务器端验证系统,但我正在寻找一些反馈,以确保我已经涵盖了所有方面。以下是我目前正在做的事情的简要概述:

  • 确保输入不为空或太长

  • 转义查询字符串以防止 SQL 注入

  • 使用正则表达式拒绝无效字符(这取决于提交的内容)

  • 编码某些 html 标签,例如 <script> (所有标签在存储在数据库中时都会被编码,有些在被查询以在页面中呈现时被解码)

有什么我想念的吗?欢迎使用代码示例或正则表达式。

0 投票
8 回答
53811 浏览

security - 经典 ASP SQL 注入保护

什么是防止经典 asp 应用程序的 sql 注入的有效方法?

仅供参考,我将它与访问数据库一起使用。(我没有写应用程序)

0 投票
4 回答
8045 浏览

sql - 动态 SQL - 搜索查询 - 可变数量的关键字

我们正在尝试更新我们的经典 asp 搜索引擎以保护它免受 SQL 注入。我们有一个 VB 6 函数,它通过基于各种搜索参数将查询连接在一起来动态构建查询。我们已经使用动态 sql 将其转换为存储过程,用于除关键字之外的所有参数。

关键字的问题是用户提供了可变数量的单词,我们想为每个关键字搜索几列。由于我们无法为每个关键字创建单独的参数,我们如何构建安全查询?

例子:

处理此问题并维护 SQL 注入保护的最佳方法是什么?