sql-injection相关内容
背景 我已签约分析现有的数据提供程序,但我知道以下代码有问题;但为了指出它有多糟糕,我需要证明它容易受到 SQL 注入的影响. 问题 什么“钥匙"?参数可能会破坏 PrepareString 函数并允许我执行 DROP 语句? 代码片段 公共共享函数 GetRecord(ByVal Key As String) As RecordDim Sql 作为新的 StringBu
..
昨天我和一个开发人员交谈,他提到了一些关于限制数据库字段插入的事情,比如像 -- 这样的字符串(减号). 在同一类型中,我知道这是一种转义 HTML 字符(如 等)的好方法,而不是 --.这是真的?我需要担心--、++吗?它更像是神话还是旧事? 更新 非常感谢所有的答案,这样很容易理解,因为我对这一切都很陌生.好吧,更具体地说,在这种情况下,我们的讨论是关于我们正在开发的
..
似乎对 SQL 注入攻击有些歇斯底里.最近,这里 如何根据另一字段中的查找值返回一个字段中的值 如果我在 Excel 中创建一个连接到 Access 数据库的宏,我真的需要担心 SQL 注入吗?它不在网络上,它在我的办公室中使用(你们还记得台式机吗?).我不担心我的同事会破坏我.如果他们足够聪明来进行 SQL 注入,那么他们是否足够聪明来破解我的加载项密码并更改代码? 解决方案
..
我们正在这里进行另一场关于在我们的代码中使用参数化 sql 查询的讨论.我们有两个方面的讨论:我和其他一些人说我们应该始终使用参数来防止 sql 注入,而其他人则认为没有必要.相反,他们希望在所有字符串中用两个撇号替换单个撇号,以避免 sql 注入.我们的数据库都运行 Sql Server 2005 或 2008,我们的代码库运行在 .NET framework 2.0 上. 让我举一个简单
..
我一直在向我的同事和这里宣讲在 SQL 查询中使用参数的好处,尤其是在 .NET 应用程序中.我什至向他们保证对 SQL 注入攻击具有免疫力. 但我开始怀疑这是否真的如此.是否有任何已知的 SQL 注入攻击可以成功针对参数化查询?例如,您能否发送一个导致服务器缓冲区溢出的字符串? 当然还有其他考虑因素要确保 Web 应用程序是安全的(例如清理用户输入和所有这些东西),但现在我正在考虑
..
在 PHP 中,我知道 mysql_real_escape 比使用 addslashes 安全得多.但是,我找不到 addslashes 会让 SQL 注入发生的例子. 谁能举出一些例子? 解决方案 好吧,这是您想要的文章. 基本上,攻击的工作方式是让 addslashes() 在多字节字符的中间放置一个反斜杠,这样反斜杠就失去了作为有效多字节序列的一部分的意义. 文章中
..
预制语句如何帮助我们防止SQL 注入 攻击? 维基百科说: 准备好的语句可以抵御 SQL 注入,因为参数值,稍后使用不同的协议,不需要正确转义.如果原来的说法模板不是从外部输入派生的,SQL 注入不能发生. 我不太清楚原因.用简单的英语和一些例子做一个简单的解释是什么? 解决方案 想法很简单——查询和数据分别发送到数据库服务器. 仅此而已. SQL 注入问题的根源
..
我对使用数据库很陌生.现在我可以编写SELECT、UPDATE、DELETE 和INSERT 命令.但是我看过很多我们喜欢写的论坛: SELECT empSalary from employee wheresalary = @salary ...而不是: SELECT empSalary from employee wheresalary = txtSalary.Text 为什么我们总是喜
..
最初我使用mysql_connect 和mysql_query 来做事.然后我学习了 SQL 注入,所以我正在尝试学习如何使用准备好的语句.我了解 PDO 类的准备和执行功能如何有助于防止 SQL 注入. 仅当用户输入存储到数据库时才需要准备好的语句吗?仍然使用 mysql_num_rows 是否可以,因为我并没有真正冒着使用此功能被黑客入侵的风险?还是使用准备好的语句来执行此操作更安全?我
..
今天早些时候有人问了一个关于 网络应用中的输入验证策略. 在撰写本文时,最佳答案建议在 PHP 中仅使用 htmlspecialchars 和 mysql_real_escape_string. 我的问题是:这总是足够的吗?还有更多我们应该知道的吗?这些功能在哪里分解? 解决方案 当涉及到数据库查询时,总是尝试使用准备好的参数化查询.mysqli 和 PDO 库支持这一点.这比
..
我正在处理一个表单,用户可以在要提交给数据库的字符串中使用非法/特殊字符.我想转义/否定字符串中的这些字符,并且一直在使用 htmlspecialchars().但是,有没有更好/更快的方法? 解决方案 如果您将此数据提交到数据库,请查看您的数据库的转义函数. 也就是说,对于 MySQL,有 mysql_real_escape_string. 这些转义函数会处理任何可能是恶意的
..
假设我有这样的代码: $dbh = new PDO("blahblah");$stmt = $dbh->prepare('SELECT * FROM users where username = :username');$stmt->execute(array(':username' => $_REQUEST['username'])); PDO 文档说: 预处理语句的参数不需要加引号;
..
是否有一个包罗万象的功能可以很好地清理用户输入以应对 SQL 注入和 XSS 攻击,同时仍然允许某些类型的 HTML 标签? 解决方案 认为可以过滤用户输入是一个常见的误解.PHP 甚至有一个(现已弃用)“功能",称为 magic-quotes,建立在这个想法之上.这是胡说八道.忘记过滤(或清洁,或任何人们所说的). 为了避免出现问题,您应该做的很简单:每当您将一段数据嵌入到外部代码
..
我正在尝试使用用户提供的数据创建 SQL 语句.我在 C# 中使用了类似的代码: var sql = "INSERT INTO myTable (myField1, myField2) " +"VALUES ('" + someVariable + "', '" + someTextBox.Text + "');";var cmd = new SqlCommand(sql, myDbConnec
..
我必须为我的 OJT 公司编写一个应用程序管理系统.前端将使用 C# 完成,后端将使用 SQL. 现在我从来没有做过这个范围的项目;在学校,我们只有关于 SQL 的基本课程.不知何故,我们的老师完全没有讨论 SQL 注入,这是我现在在网上阅读有关它才接触到的东西. 无论如何,我的问题是:如何防止 C# 中的 SQL 注入?我模糊地认为可以通过正确屏蔽应用程序的文本字段来完成,以便它只接
..
对于经典的 asp 应用程序来说,防止 sql 注入的强大方法是什么? 仅供参考,我将它与访问数据库一起使用.(我没有写应用程序) 解决方案 存储过程和/或准备好的语句: https://stackoverflow.com/questions/1973/what-is-the-best-way-to-avoid-sql-injection-attacks 我可以保护吗通过
..
我必须在我的 java 程序中添加一条语句来更新数据库表: 字符串插入 ="INSERT INTO customer(name,address,email) VALUES('" + name + "','" + addre + "','" + email + "');"; 我听说这可以通过 SQL 注入来利用,例如: DROP TABLE 客户; 我的程序有一个 Java GUI,所有姓名
..
我知道 PreparedStatements 避免/防止 SQL 注入.它是如何做到的?使用 PreparedStatements 构造的最终表单查询是字符串还是其他形式? 解决方案 SQL 注入的问题在于,用户输入被用作 SQL 语句的一部分.通过使用准备好的语句,您可以强制将用户输入作为参数的内容进行处理(而不是作为 SQL 命令的一部分). 但是,如果您不使用用户输入作为准备好
..
我正在将我的代码从使用 mysql_* 修改为 PDO.在我的代码中,我有 mysql_real_escape_string().这在 PDO 中的等价物是什么? 解决方案 好吧,不,没有! 技术上有 PDO::quote() 但它很少被使用,并且不等同于 mysql_real_escape_string() 没错!如果您已经按照使用 prepared statements,然
..
我只是想知道是否有一种方法可以在 MySQL 中使用某种形式的准备好的语句,这样我就不必转义所有输入,也不必将所有文件从 MySQL 切换到 MySQLi.我真的不相信转义函数,所以如果有任何可以在常规 MySQL 中工作的替代方法,那就太好了. 解决方案 使用 PDO (PHP 数据对象) 连接到您的 MySQL 数据库.此方法将确保所有数据库输入将始终被视为文本字符串,您将永远不必进行
..