sql-injection相关内容
我有一个应用程序,它可以通过将动态 mysql 查询与 mysql (mysqli) 真实转义字符串结合使用而受益匪浅.如果我通过 mysql real escape 运行从用户那里收到的所有数据,它会和使用 mysql 准备好的语句一样安全吗? 解决方案 绝对不会. 虽然标题中的问题含糊不清,可以被解释为“动态 mysql 查询是否具有每个部分格式正确...",因此得到肯定的回答,
..
这是我的代码: $email= mysqli_real_escape_string($db_con,$_POST['email']);$psw=mysqli_real_escape_string($db_con,$_POST['psw']);$query = "INSERT INTO `users` (`email`,`psw`) VALUES ('".$email."','".$psw."'
..
不久前开始使用 PDO 准备好的语句,据我所知,它为您完成了所有的转义/安全. 例如,假设 $_POST['title'] 是一个表单字段. $title = $_POST['title'];$query = "插入 blog(userID, title) 值 (?, ?)"$st = $sql->prepare($query);$st->bindParam(1, $_SESSION['u
..
我知道您永远不应该相信来自表单的用户输入,主要是由于 SQL 注入的可能性. 但是,这是否也适用于唯一输入来自下拉列表的表单(见下文)? 我将 $_POST['size'] 保存到一个会话中,然后在整个站点中使用它来查询各种数据库(使用 mysqli Select 查询) 并且任何 SQL 注入肯定会伤害(可能会丢弃)它们. 没有用于键入用户输入来查询数据库的区域,只有下拉列表.
..
我在这里看到一些人说使用 mysql_real_escape_string 连接查询不会保护您(完全)免受 SQL 注入攻击. 但是,我还没有看到一个输入示例来说明mysql_real_escape_string 无法保护您免受攻击.大多数示例忘记了 mysql_query 仅限于一个查询,并且错误地使用了 mysql_real_escape_string. 我能想到的唯一例子如下:
..
在 http://www.justinshattuck.com/2007/01/18/mysql-injection-cheat-sheet/?akst_action=share-this ,有一个部分声称您可以使用某些亚洲字符编码绕过 mysql_real_escape_string 使用 BIG5 或 GBK 绕过 mysql_real_escape_string() “注入字符串
..
我必须在我的 java 程序中添加一条语句来更新数据库表: 字符串插入 ="INSERT INTO customer(name,address,email) VALUES('" + name + "','" + addre + "','" + email + "');"; 我听说这可以通过 SQL 注入来利用,例如: DROP TABLE 客户; 我的程序有一个 Java GUI,所有姓名
..
另一个问题中的评论如下: "说到数据库查询,总是尝试使用准备好的参数化查询.mysqli 和PDO 库支持这一点.这是比使用转义无限安全功能如mysql_real_escape_string." 来源 那么,我想问的是:为什么准备好的参数化查询更安全? 解决方案 我认为这里的人们缺少的一个重要点是,对于支持参数化查询的数据库,无需担心“转义".数据库引擎不会将绑定的变量组
..
在 MySQL 上运行查询的最安全方法是什么?我知道 MySQL 和 SQL 注入所涉及的危险. 但是,我不知道应该如何运行查询以防止注入其他用户(网络客户端)可以操作的变量.我曾经写过自己的转义函数,但显然这是“未完成". 我应该使用什么以及我应该如何使用它通过 python 在 MySQL 数据库上安全地查询和插入,而不会冒 MySQL 注入的风险? 解决方案 为了避免注入
..
有些人认为 mysql_real_escape_string() 有一些缺陷,即使正确使用也无法保护您的查询. 带来一些僵化文章作为证据. 那么,问题是:mysql[i]_real escape_string() 是完全不能接受的吗? 或者是否仍然可以使用此函数来创建您自己的准备语句? 请提供验证码. 解决方案 来自 MySQL的C API函数mysql_real_esca
..
我已经读了很多书,但仍然没有 100% 理解某些 SQL 注入是如何发生的! 我想从那些知道的人那里看到基于我的示例的 SQL 注入的具体示例,以便它可以被复制、测试和修复.我曾尝试 SQL 注入我的代码,但没有成功,所以我希望有人能证明我不是这样! 1.SQL 注入只能通过 POST 或 GET 方法发生,这意味着在网站上它应该是发布表单,例如“注册或搜索"或“search.php?
..
是否有可能像 PHP 具有防止 SQL 注入的预处理语句那样防止 Node.js 中的 SQL 注入(最好使用模块). 如果是这样,怎么办?如果没有,有哪些示例可以绕过我提供的代码(见下文). 一些背景: 我正在使用 制作一个包含 Node.js + MySql 的后端堆栈的 Web 应用程序node-mysql 模块.从可用性的角度来看,该模块很棒,但它还没有实现类似于 PHP
..
这是为了创建一个社区学习资源.我们的目标是让好的代码示例不会重复在复制/粘贴的 PHP 代码中经常出现的可怕错误.我已要求将其设为社区 Wiki. 这不是一场编码竞赛.这不是寻找最快或最紧凑的查询方式 - 而是提供一个很好的、可读的参考,尤其是对于新手. 每天都有大量问题涌入,其中包含非常糟糕的代码片段,这些问题使用 Stack Overflow 上的 mysql_* 函数系列.虽然通
..
即使使用mysql_real_escape_string()函数,是否也有SQL注入的可能性? 考虑这个示例情况.SQL 在 PHP 中是这样构造的: $login = mysql_real_escape_string(GetFromPost('login'));$password = mysql_real_escape_string(GetFromPost('password'));$s
..
如果用户输入未经修改就插入到 SQL 查询中,那么应用程序很容易受到SQL 注入的攻击,就像在下面的例子: $unsafe_variable = $_POST['user_input'];mysql_query("INSERT INTO `table`(`column`) VALUES('$unsafe_variable')"); 那是因为用户可以输入类似value');DROP TABLE
..
我知道 PreparedStatements 避免/防止 SQL 注入.它是如何做到的?使用 PreparedStatements 构造的最终表单查询是字符串还是其他形式? 解决方案 SQL 注入的问题在于,用户输入被用作 SQL 语句的一部分.通过使用准备好的语句,您可以强制将用户输入作为参数的内容进行处理(而不是作为 SQL 命令的一部分). 但是,如果您不使用用户输入作为准备好
..
我正在尝试在 Java 中放置一些反 sql 注入,并且发现使用“replaceAll"字符串函数非常困难.最终我需要一个函数将任何现有的 \ 转换为 \\,任何 " 到 \",任何' 到 \',以及任何 \n 到 \\n 以便当字符串被 MySQL 评估时SQL 注入将被阻止. 我已经添加了一些我正在使用的代码,但函数中的所有 \\\\\\\\\\ 都让我看傻了眼.如果有人碰巧有这样的例子
..
是否可以过滤包含 SQL 注入值的 Web 请求? 解决方案 有 Web 应用程序防火墙或数据库防火墙尝试执行此操作. 您必须定义接受输入的模式,或者定义允许的文字输入列表. 其中一些产品的工作原理是让您通过在您知道没有 SQL 注入攻击发生的时间段运行您的应用来“训练"它们,并记录已知合法的 SQL 查询.然后您关闭训练模式,随后防火墙将阻止任何与其允许的输入列表不匹配的内容
..
您好,我一再被告知不要在我的 sql 代码中使用连接,以免发生sql 注入攻击.但是我已经尝试破解我自己的代码,没有成功.甚至可以通过窗口形式sql-inject吗?请在下面找到相关的代码段: SqlConnection con = new SqlConnection(“数据源=PV10\\LOCALSERVER;初始目录=dbtest;集成安全=真");con.Open();SqlComman
..
我有以下写入 PostgreSQL 数据库的函数.我需要使其免受 SQL 注入的影响,但我不知道该怎么做. 从 pg_query_params 组装的查询部分不会被注入(或者我被告知),但是组装查询的另一部分通过 PHP 的字符串连接 .显然容易受到注射. 私有函数 setItem($table, $id, $field, $itemId, $fieldValue){$_1 = $item
..