问题标签 [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.
sql-server - SqlCeResultSet 和 SQL 注入
使用此代码插入带有 SqlCeResultSet 的行时,
它可以防止 SQL 注入攻击吗?
c# - Sql 注入攻击和亚音速
如果我使用 SubSonic 为我的 Web 项目创建 DAL,我是否需要担心防止 SQL 注入攻击?
php - PHP/SQL 数据库查询良好实践和安全性
所以我是一个经验丰富的 php 开发人员,自 2007 年以来一直在“做这该死的事”;但是,在保护我的应用程序方面,我仍然相对不成熟。在某种程度上,我并不真正了解我知道的一切,我可以而且应该。
我已经拿起了Securing PHP Web Applications并且正在阅读我的方式来测试它。我有一些与数据库查询相关的一般 SO 组的问题(主要在 mysql 下):
创建将数据放入数据库的应用程序时,mysql_real_escape_string 和对输入数据的常规检查(is_numeric 等)是否足够?与sql注入不同的其他类型的攻击呢?
有人可以用比你制作它们并调用它们更多的信息来解释存储过程和准备好的语句。我想知道它们是如何工作的,在幕后进行了哪些验证。
我在 php4 绑定环境中工作,而 php5 暂时不是一个选项。以前有没有其他人担任过这个职位,当所有酷孩子都在使用那个甜蜜的新 mysqli 界面时,你做了什么来保护你的应用程序?
人们发现有哪些普遍的良好实践是有利的,强调创建能够承受升级和可能迁移的基础架构(例如将 php4 迁移到 php5)。
注意:已经四处搜索找不到任何与 php-mysql 安全性类似的东西。
php - 通过 addlashes() 进行 SQL 注入的示例?
在 PHP 中,我知道这mysql_real_escape
比使用addslashes
. 但是,我找不到addslashes
让 SQL 注入发生的情况的示例。
谁能举一些例子?
python - 在数据库查询字符串中转义引号的好方法?
我尝试了各种 Python 模块,但它们要么逃逸太多,要么以错误的方式逃逸。您发现在 Python 中转义引号 (", ') 的最佳方法是什么?
iphone - sqlite3_bind_text 是否足以防止 iPhone 上的 SQL 注入
鉴于声明:
以下使用sqlite3_bind_text
(及相关sqlite3_bind_*
函数)是否足以防止 SQL 注入攻击?
c# - 避免无参数的 SQL 注入
我们正在讨论在我们的代码中使用参数化的 sql 查询。我们在讨论中有两个方面:我和其他一些人说我们应该始终使用参数来防止 sql 注入以及其他认为没有必要的人。相反,他们希望在所有字符串中用两个撇号替换单个撇号,以避免 sql 注入。我们的数据库都在运行 Sql Server 2005 或 2008,我们的代码库在 .NET framework 2.0 上运行。
让我在 C# 中给你一个简单的例子:
我希望我们使用这个:
而其他人想要这样做:
其中 SafeDBString 函数定义如下:
现在,只要我们在查询中的所有字符串值上使用 SafeDBString,我们就应该是安全的。对?
使用 SafeDBString 函数有两个原因。首先,这是自石器时代以来的方式,其次,由于您看到在数据库上运行的精确查询,因此更容易调试 sql 语句。
那么。我的问题是使用 SafeDBString 函数是否真的足以避免 sql 注入攻击。我一直在尝试找到违反此安全措施的代码示例,但我找不到任何示例。
有没有人可以打破这个?你会怎么做?
编辑: 总结到目前为止的答复:
- 还没有人找到绕过 Sql Server 2005 或 2008 上的 SafeDBString 的方法。这很好,我想?
- 一些回复指出,使用参数化查询可以提高性能。原因是查询计划可以重复使用。
- 我们也同意使用参数化查询可以提供更易于维护的可读代码
- 此外,始终使用参数比使用各种版本的 SafeDBString、字符串到数字的转换和字符串到日期的转换更容易。
- 使用参数,您可以获得自动类型转换,这在我们处理日期或十进制数字时特别有用。
- 最后:不要像 JulianR 所写的那样尝试自己做安全工作。数据库供应商在安全性上花费了大量时间和金钱。我们没有办法做得更好,也没有理由尝试做他们的工作。
因此,虽然没有人能够破坏 SafeDBString 函数的简单安全性,但我得到了许多其他好的论据。谢谢!
perl - 是否可以使用 DBD::Oracle 在单个查询中执行多个语句?
我想知道是否可以在单个语句中执行多个 SQL 语句execute()
或do()
使用DBD::Oracle
via Perl调用DBI
。例子:
我问这个不是因为我想真正做这样的事情,而是因为我想通过成功的 SQL 注入攻击来衡量可能造成的损害。是的,我知道,不管这个问题的答案如何,仍然必须从根本上消除 SQL 注入的可能性,只使用绑定值和受信任的输入等。但问题仍然存在:是否可以DBD::Oracle
执行多个陈述?
作为一个相关示例,DBD::mysql
有一个mysql_multi_statements
明确启用此“功能”的连接选项。我无法摆脱这样一种感觉,即有一些类似的、可能是未记录的和晦涩的 Oracle OCI 选项可以通过它以某种方式访问DBD::Oracle
,从而实现相同的功能。
万一这很重要,这是:
perl
5.8.8DBD::Oracle
1.22- 甲骨文 11g (11.01.0700)
php - 在 PHP 中清理用于数据库的用户输入
我有这个代码:
我试过这段代码来清理它:
但我得到了 mysql_real_escape 行的这个错误:
我在这里得到用户名,我不知道它是否足够安全:
谢谢
php - PHP函数用字符代码替换符号以停止SQL注入
我正在尝试编写一个 php 函数来阻止 MySQL 注入尝试。我正在做的是使用 str_replace() 删除符号并用它们的 HTML 字符代码替换它们。我的问题是代码都包含 但我也想用它们的代码替换这些符号。在不将代码更改为以下内容的情况下如何做到这一点:
这是我的功能: