标签: sql-injection

PHP保护自己免受SQL注入?

当我");--从输入字段发送到我的localhost PHP服务器时,它自动将其转换为

\"); -

这似乎很棒,除了我不知道这种行为是多么值得信赖.虽然它似乎避免了SQL注入,但我的开发环境与生产环境不同,我担心生产环境可能没有自动激活这种保护......

为什么PHP会这样做(转换输入而不必使用mysql_real_escape_string)?它总是这样做还是仅限于某些扩展?依赖此行为来阻止SQL注入是否安全?

php security sql-injection

0
推荐指数
1
解决办法
509
查看次数

在PHP中清理发往数据库的用户输入

我有这个代码:

$query = "select id from votes where username = '$user' and article_id  = $this->id";
Run Code Online (Sandbox Code Playgroud)

我尝试使用此代码来清理它:

$query = sprintf("select id from votes where username = '$user' and article_id = $this->id", 
    mysql_real_escape_string($user), 
    mysql_real_escape_string($password));
Run Code Online (Sandbox Code Playgroud)

但我得到mysql_real_escape行的这个错误:

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'mexautos'@'localhost' (using password: NO) in /home/mexautos/public_html/kiubbo/data/article.php on line 145 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/mexautos/public_html/kiubbo/data/article.php on line 145 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'mexautos'@'localhost' (using password: NO) in /home/mexautos/public_html/kiubbo/data/article.php on …
Run Code Online (Sandbox Code Playgroud)

php sanitization sql-injection code-injection sanitize

0
推荐指数
2
解决办法
2822
查看次数

如何使用MySQL在C#中保护用户指定的表名与SQL注入

作为对TableName的MySqlParameter的反应,似乎MySQL的Connector/NET库不支持用户输入的表名,方式如下:

MySqlCommand cmd = new MySqlCommand("SELECT * FROM @table");
cmd.Parameters.AddWithValue("@table",TableNameFromUserInput);
Run Code Online (Sandbox Code Playgroud)

所以我试图找到另一种方式,但我找不到任何为我这样做的库.

当手动搜索如何执行此操作时,我找不到任何没有告诉您使用某些已定义库中的"预准备语句"的内容,无论语言是什么.

由于我对SQL的了解有限,我只认为有必要在用户输入周围添加反引号(`),然后检查输入是否有反引号 - 但我想确定.

当MySQL Connector不支持时,如何保护用户指定的表名不受SQL-Injection的影响?

c# mysql sql-injection mysql-connector

0
推荐指数
1
解决办法
639
查看次数

通过删除字符和其他可能的方法来防止SQL注入

如果我'在sql查询的变量中删除" "字符,则可以避免SQL注入.我使用的SQL查询是:

dbCommand = new OleDbCommand("update Table1 set PhoneNo = '" + phone + "' where Table1.Company = '" + company + "'", dbConnection);
dbCommand.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

我也以类似的方式使用SELECT sql查询:

dbReader = new OleDbCommand("select * from Table1 where Table1.Company = '" + company + "'", dbConnection).ExecuteReader();
dbReader.Read();

if (dbReader.HasRows)
{
    //Do operations using dbReader["Company"]
}
Run Code Online (Sandbox Code Playgroud)

变量中是否还有其他可能导致SQL注入或其他风险的字符?我可以删除那些.有什么其他方法可以防止SQL注入或其他风险?

c# sql database sql-injection

0
推荐指数
1
解决办法
1806
查看次数

为什么不反斜杠每个空格以防止mysql注入

我一直想知道这可能是几个月了,但我仍然不知道答案,除了可能的速度表现.长话短说,为什么不在每个角色之间放一个反斜杠,而不是在所有这些PDO代码到处都有?

$String = $_POST["attack"];   // SOME THING' OR 1 = 1 --
$String = fFilter( $String ); // \S\O\M\E\ \T\H\I\N\G\'\ \O\R\ \1\ \=\ \1\ \-\-
Run Code Online (Sandbox Code Playgroud)

现在我还没有进入这个SQL的东西,所以我不能给出一个完美的例子,但基本上sql字符串应该看起来像这样的SELECT * FROM account WHERE id = '\S\O\M\E\ \T\H\I\N\G\'\ \O\R\ \1\ \=\ \1\ \-\-'东西似乎总是很安全,但我没有听说过任何人使用它,甚至为什么不使用它.我总是看到像过滤html等的东西不好,但我不明白为什么不只是过滤每一个字符.因为任何攻击都会像\a\t\t\a\c\k.

php mysql sql sql-injection

0
推荐指数
1
解决办法
267
查看次数

PDO和转义输入:这是最安全的方式吗?

我想在上线之前检查自己.我在互联网上阅读了很多不同的东西,但我想知道这是否绝对保护我的SQL注入代码.如果没有,我需要添加或带走什么?

$idtoapprove = mysql_real_escape_string($_POST['idtoapprove']);

$getcity = $conn->prepare('SELECT city, state FROM needs WHERE ID=:idtoapprove');
$getcity->bindParam(':idtoapprove', $idtoapprove);
$getcity->execute();

$cityrow = $getcity->fetch();
$needcity = $cityrow['city'];
$needstate = $cityrow['state'];

echo "$needcity, $needstate";
Run Code Online (Sandbox Code Playgroud)

php mysql pdo sql-injection

0
推荐指数
1
解决办法
53
查看次数

ColdFusion和Oracle SQL注入示例

假设ColdFusion 10,0,13,287689和Oracle Database 11g企业版11.2.0.2.0 - 64位生产.

有了这个例子......

<cfquery name="q" datasource="ds">
    update someTable set
    #form.col#label = <cfqueryparam cfsqltype="cf_sql_varchar" value="#x#">
    where id = <cfqueryparam cfsqltype="cf_sql_decimal" value="#id#">
</cfquery>
Run Code Online (Sandbox Code Playgroud)

还假设没有数据验证检查#form.col#,如何利用它?显然,它们可能会导致查询失败并显示无效列,但由于多个语句无法在单个语句中运行,因此我没有看到任何更恶意的行为<cfquery>.所以像这样的东西不起作用......

#form.col#:

id = 1; delete from users; --comment everything else out...
Run Code Online (Sandbox Code Playgroud)

我知道使用SELECT会更容易利用联合来获取您无权查看的数据,但我对这个特定的更新语句很好奇.

sql oracle coldfusion sql-injection

0
推荐指数
1
解决办法
360
查看次数

如何在PHP中阻止MSSQL注入?

我知道这是一个广泛涉及的主题,但在搜索谷歌的PHP的MSSQL注入预防后,我发现几乎没有.

这是我能找到的最接近的答案,但似乎答案是MySQL和不是MSSQL.

我正在使用的PHP代码允许管理员通过表单输入登录到网站以访问后端.此代码是在提交表单后记录管理员的代码:

<?php
  session_start();

  if($_SERVER['REQUEST_METHOD'] == "POST") {
$conn=mssql_connect('d','a','d');
mssql_select_db('d',$conn);
if(! $conn )
{
  die('Could not connect: ' . mssql_get_last_message());
}

    $username = ($_POST['username']);
    $password = ($_POST['password']);

    $result = mssql_query("SELECT * FROM back_end WHERE username='$username' AND
      password='$password'");
  if(mssql_num_rows($result) > 0) {
      $_SESSION['is_logged_in'] = 1;
      $_SESSION['backname'] = $username;
    }
  }

  if(!isset($_SESSION['is_logged_in'])) {
    header("location:logingbm.php");
    echo "<script>alert('Incorrect log-in information!');</script>";
  } else {
    header("location:../d/index.php");
  }
?>
Run Code Online (Sandbox Code Playgroud)

如果有人能给我一些提示我应该放入什么代码以防止恶意注入,我们将不胜感激.感谢您的任何帮助.

php sql forms sql-server sql-injection

0
推荐指数
1
解决办法
285
查看次数

这个动态创建的sql有多脆弱?

我可以在网上找到关于动态创建参数化查询的正确和安全方法的大量信息.但是,此类网站仅讨论where子句的参数化.

那么,sql语句的其他子句呢?请参阅以下内容:

       string sql = string.Format(@"                
            SELECT MIN(TableName) as TableName, {0}
            FROM
            (
              SELECT 'Table A' as TableName, {0}
              FROM {1}
              UNION ALL
              SELECT 'Table B' as TableName, {0}
              FROM {2}
            ) tmp
            GROUP BY {0}
            HAVING COUNT(*) = 1", columnList, tableA, tableB);
Run Code Online (Sandbox Code Playgroud)

我正在构建一个声明,其中已经参数化了以下内容:

  1. select子句中的项目
  2. from子句中的tablename

问题:这对sql注入有多么脆弱,可能会造成一些损害?

无论如何,我无法想到恶意黑客可以注入sql,这将导致正确形成的可执行sql.但话说回来,我不是一个SQL专家.

c# sql sql-injection

0
推荐指数
1
解决办法
102
查看次数

SQL注入预防方法

如果我围绕一个sql语句包装解释,即

explain ( [arbitrary sql string] )

我应该能够预防注射create,drop,truncate,delete命令是否正确?

我只是在postgres上尝试过它,它似乎有效,但我不知道是否有一个我忘了的角落案例.

sql security postgresql sql-injection

0
推荐指数
1
解决办法
512
查看次数