问题标签 [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 投票
4 回答
699 浏览

session - 会话可以伪造吗?

我需要检查我所有的 asp 代码以防止 SQL 注入。

我也应该检查会话对象吗?

会话如何被劫持?

谢谢!!

0 投票
5 回答
1556 浏览

asp.net - 基于 HTTP 或 SQL Server 的 sql 注入解决方案

我正在使用 SQL Server 2005 和 Windows Server 2000,想知道在我支持我的代码时是否有任何“自动”方法来阻止 SQL 注入攻击。

有人建议有以下方法:

  1. 放入某种 ISAPI 或 HTTP 模块,用于过滤请求帖子和查询字符串以查找面向注入的符号,并在请求到达应用程序之前使请求失败。这些解决方案中的大多数特定于 IIS 6 或更高版本。我跑5。
  2. 保证每个命令对象一次只运行一个 SQL 命令。

我的配置还有其他想法吗?

0 投票
4 回答
1377 浏览

sql-injection - SQL 注入攻击 - 这是怎么回事?

可能重复:
尝试的 SQL 注入攻击 - 他们试图做什么?

在过去的几个月里,我多次在我的网站上看到这种 SQL 注入尝试。

浏览完我的代码后,我确信我受到了保护,因为我查询的是内存数据集而不是数据库本身。但是,即使我确定自己受到保护,但我并不完全了解这次攻击尝试发生了什么,并想弄清楚,这样我就可以避免将来编写可能容易受到攻击的代码。

谁能向我解释这些黑客试图用这段代码做什么?

谢谢。

- 此代码被附加到查询字符串并作为发布数据发送。

0 投票
7 回答
2249 浏览

security - 通过在查询中附加没有空格的输入,我是否容易受到 SQL 注入的攻击?

我从用户输入中获取一个字符串,并将其在空格上(使用 \w)拆分为一个字符串数组。然后我循环遍历数组,并像这样附加 where 子句的一部分:

我觉得这很危险,因为我将用户输入附加到我的查询中。但是,我知道任何搜索字符串中都没有任何空格,因为我将初始输入拆分为空格。

是否可以通过 SQL 注入来攻击它?给予Robert');DROP TABLE students;--实际上不会丢弃任何东西,因为那里需要有空格。在该示例中,它不会正常运行,但不会造成任何损坏。

任何有更多对抗 SQL 注入经验的人都可以帮助我解决这个问题,或者让我放心吗?

谢谢!

编辑:

哇,这是很多很棒的输入。感谢所有回复的人。我将研究全文搜索,并至少参数化我的查询。

只是为了让我能更好地理解这个问题,如果所有空格和单引号都被转义了,是否可以注入?

0 投票
3 回答
3130 浏览

java - Findbugs 没有发现潜在的 SQL 注入漏洞

我刚刚为 Eclipse 安装了 FindBugs 插件,希望它能帮助我找到代码中的 SQL 注入漏洞。然而,它似乎并没有找到任何东西,即使我故意放了一些。

在以下示例中,假设staticFinalBaseQuery声明如下:

public static final String staticFinalBaseQuery = "SELECT foo FROM table where id = '";

并且假设userInputfilterString是包装示例片段的方法的参数。它直接来自用户输入,没有经过净化。

例如,以下代码段不会触发警告:

wherestaticFinalBaseQuery是一个静态的最终字符串,userInputfilterString是直接来自用户输入的字符串,仅在运行时可用,根本不被清除。显然,这是一个漏洞。

我希望触发“ Aprepared statement is generated from a nonconstant String ”警告。

以下代码段也不会引起警告(不足为奇,因为它们的编译形式可能相同):

但是,这将导致警告:

如果我附加一个空字符串或一个空格,则不会触发任何警告。

所以,我的问题是,如何让 FindBugs 在我的第一个示例中触发?我也很好奇为什么第一个不会引起警告,但最后一个呢?

提前致谢!

编辑:我向 FindBugs 的错误跟踪系统提交了一个错误,因为这似乎是一个错误。但是,如果有人有任何提示,我很想听听。

0 投票
4 回答
1793 浏览

xss - 允许在表单输入中使用代码片段,同时防止 XSS 和 SQL 注入攻击

如何在防止 XSS、SQL 注入和相关攻击的同时允许将代码片段输入到 FCKeditor 或任何其他编辑器之类的编辑器中(就像 stackoverflow 一样)。

0 投票
3 回答
5293 浏览

sql-server - NV32ts 及其 SQL 注入攻击试图做什么?

最近我的网站受到了一些攻击,使用的是 NV32ts 的用户代理。

它们都是以下针对查询字符串变量的注入攻击的一些变体(其中 99999 表示有效的查询字符串值,攻击附加到该值):

(为方便起见,我对以下攻击进行了 urldecode)

或者

或者

我相信 sysobjects 与 Sql Server 主数据库有关,但我无法弄清楚他们想要完成什么。

编辑: 我现在已经用两个不同的用户代理看到了这些相同的东西:

  • NV32ts
  • Mozilla/4.0(兼容;MSIE 7.0;Windows NT 5.1;InfoPath.1;.NET CLR 1.1.4322;.NET CLR 2.0.50727;.NET CLR 3.0.04506.30;.NET CLR 3.0.04506.648;.NET CLR 3.5。 21022; WWTClient2 )
0 投票
3 回答
2239 浏览

c# - 具有直接用户输入的动态 LINQ,有什么危险吗?

我在 ASP.NET MVC 应用程序中有一个表,我想使用 AJAX 对其进行排序(服务器端)和过滤。我希望它在其他地方相当容易使用,并且不想将排序和过滤硬编码到查询表达式中,所以我寻找一种动态构建表达式的方法,我发现最好的方法是使用 Dynamic LINQ .

来自如下 URL 的用户输入直接插入到动态 Where 或 OrderBy。

这将导致两个表达式:

虽然我知道它不会直接扔到数据库中并且在此处插入直接 SQL 将不起作用,因为它不能反映到属性并且它是类型安全的,我想知道是否有人比我更有创意无论如何都可以找到一种利用它的方法。我能想到的一个利用是可以对表中不可见的属性进行排序/过滤,但这并不是那么有害,因为它们仍然不会显示并且可以通过散列来防止。

我允许直接用户输入的唯一方法是使用 OrderBy 和 Where。

只是确保,谢谢:)

0 投票
15 回答
2674 浏览

c# - 如何防止用户生成的 Sql 查询上的 Sql 注入

我有一个项目(私人,ASP.net 网站,密码保护 https),其中一个要求是用户能够输入将直接查询数据库的 Sql 查询。我需要能够允许这些查询,同时防止它们对数据库本身造成损害,以及访问或更新他们不应该能够访问/更新的数据。

我提出了以下实施规则:

  1. 使用只有Select Table/View 和 Update Table 权限的 db 用户(因此任何其他命令,如 drop/alter/truncate/insert/delete 都不会运行)。
  2. 验证语句是否以“Select”或“Update”开头
  3. 验证(使用正则表达式)语句中没有没有被单引号、空格和字母包围的分号实例。(这里的想法是,他们可以包含第二个查询的唯一方法是用不属于输入字符串的分号结束第一个查询)。
  4. 验证(使用正则表达式)用户有权访问正在查询/更新的表,包括在连接中等。这包括任何子查询。(实现这一点的部分方法是用户将使用一组实际上并不存在于数据库中的表名,部分查询解析将在正确的对应表名中替换为查询) .

我错过了什么吗?

目标是用户能够以他们认为合适的任何方式查询/更新他们有权访问的表,并防止任何意外或恶意尝试损坏数据库。(并且由于要求是用户生成 sql,因此我无法使用我知道的任何内置工具对查询进行参数化或清理)。

0 投票
3 回答
7979 浏览

oracle - 是否可以在 pl sql 中参数化查询?

此处编写的存储过程当前将参数连接到查询:

是否可以在存储过程中参数化此查询?可能喜欢:

注意:
如果您想知道我们为什么这样做,我们的 sp 有两个常用参数:sortFieldIndexsortDirection. 由于我们不能直接参数化这些,查询是动态生成的。但是其他参数使查询打开以进行注入。所以我正在寻找一种方法来参数化一些参数。