标签: sql-injection

什么是SQL注入?

可能重复:
XKCD sql注入 - 请解释
什么是SQL注入?

我看过"SQL注入"一词,但仍然不理解它.它是什么?

sql sql-injection

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

当magic_quotes_gpc打开时,是否有必要使用mysql_real_escape_string()?

为了防止SQL注入,是否有必要使用mysql_real_escape_string(),何时magic_quotes_gpc开启?

mysql sql-injection

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

PHP安全抵制他人

我有一个php文件,在开始时,从使用$ _GET发送的内容中分配一些变量.

然后它执行一些mysql查询,处理输出,然后回显一些文本和变量.

我在代码中设置的唯一保护是mysql_real_escape_string在GET上.

这足以防止攻击吗?

还有什么可以做的?

php mysql sql-injection mysql-real-escape-string

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

为什么我们的应用程序需要SQL输入,而不是在SQL中处理?

我通常不会处理数据库(我为我和我的朋友写的网络应用程序管理了一些小的)所以在问我的问题之前,我将验证我是否理解了一切是如何工作的.

  1. SQL是一个"做"数据库的程序.它管理所有表和方案以及链接,并且它响应于它接收的命令执行大多数操作.您可以手动输入这些命令,或者使用命令编写脚本,或让其他程序将这些命令发送到SQL,但命令并没有真正改变.

  2. 当Web应用程序从用户接收输入并将其发送到SQL而不先清除它时,就会发生SQL注入.如果最终用户已经足够了,那么SQL将会看到它应该看作是将数据存储在某个表中的数据的命令,从而产生了讽刺.

  3. 典型的SQL注入预防涉及清理用户输入,即删除任何会使SQL认为正在发送命令的字符,而不是数据.

现在,我的问题:

为什么SQL不为我们处理这个?为什么SQL,在每个命令上都没有查找第一个",最后一个",并忽略其中的任何一个?(我不认为)是标准SQL命令语法的一部分,它已经有一段时间了,但如果没有,可能会发生变化)当然,它会阻止你同时发送多个命令(因为第二/第三个命令会被忽略)但是在"我一次发送1个命令"规则上,这几乎是忽略最终用户可能试图拉的任何恶作剧.

我确信其他人已经想到了这一点,并将其视为因某种原因无法工作.但我不知道理解为什么,我想.

sql security sql-injection

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

SQL注入和多行注释

我正在测试客户的查询,并遇到了一个有趣的问题.一个不好意图的黑客SQL会注入以下查询:

SELECT * FROM mytable WHERE 1
AND cfield='0'
AND (
field1 like '%$searchterm%' OR
field2 like '%$searchterm%' OR
)
Run Code Online (Sandbox Code Playgroud)

例如,在我看来,他无法评论第一个$ searchterm之后的内容,只是插入其他查询:

field1 like '%$searchterm%'
Run Code Online (Sandbox Code Playgroud)

不过,我可能错了.期待您的意见.先感谢您!

mysql sql oracle sql-injection

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

MySQL - ORM Idiorm - 防止SQL注入

我使用PHP并使用名为Idiorm的ORM进行SQL调用.

请求可能如下所示:

$person = ORM::for_table('person')->create();
$person->name = $_POST['name'];
$person->age = $_POST['age'];
$person->save();
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但它可能不安全反对SQL注入?解决这个问题的正确/最佳方法是什么?例?

php mysql orm sql-injection idiorm

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

PHP中的SQL注入,如何将非转义引用发送到服务器?

这段代码似乎不安全:

<form method='post'>
<input type='text' name='x' style='width:1000px'>
<input type='submit' value='Send'>
</form>
<?php
if(isset($_POST['x']))
{
    require_once("db_connect.php");
    $q = mysqli_query($dbc, "SELECT x FROM table where x = '". $_POST['x'] ."'");
    while($r = mysqli_fetch_assoc($q))
        echo $r['x'];
}
Run Code Online (Sandbox Code Playgroud)

但是当我发送恶意输入时,它没有用.所以我制作了类似的剧本:

<form method='post'>
<input type='text' name='x' style='width:1000px'>
<input type='submit' value='Send'>
</form>
<?php

if(isset($_POST['x']))
    echo $_POST['x'];
Run Code Online (Sandbox Code Playgroud)

当我发送'(撇号)时,我收到了\'.所以它会自动转义.我的问题是,它发生在哪里?如何发送'清除'撇号?

php mysql sql-injection escaping

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

如果我只允许来自特定列表的单词,我是否有SQL注入的危险?

我有一些代码访问SQL Server数据库中的表:

...
if (GetViewNames(connection).Contains(name))
{
    query = "SELECT * FROM [" + name + "]";
}
...
Run Code Online (Sandbox Code Playgroud)

这是"GetViewNames":

private List<string> GetViewNames(SqlConnection connection)
{
    List<string> viewNames = new List<string>();

    foreach (DataRow row in connection.GetSchema("Views").Rows)
    {
        // The third element in the "rows" array is the name of the view.
        viewNames.Add(row[2].ToString());
    }

    return viewNames;
}
Run Code Online (Sandbox Code Playgroud)

我想知道的是这个代码是否对SQL注入开放.name是一个通过URL传递的字符串(坏,我知道),但它只会查询数据库,如果name在我的表列表中,对吧?或者我在这里遗漏了什么?

我不是安全专家,所以请善待您的回复.

c# sql sql-server sql-injection

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

如何设置sql参数

我尝试使用sql参数的代码,但没有工作,并没有返回任何错误.我该如何解决?

string sql = "SELECT * FROM "+mw.db_name+".ananmez_genel Where hasta_id='@hastaid'";

string connectionString = ConfigurationManager.ConnectionStrings["MYDBConnectionString"].ConnectionString;

using (MySqlConnection connect = new MySqlConnection(connectionString))
{
    using (MySqlCommand cmd = new MySqlCommand(sql, connect))
    {
        connect.Open();
        cmd.Parameters.AddWithValue("@hastaid",hasta_id);
        MySqlDataReader mdr;
        mdr = cmd.ExecuteReader();

        if (mdr.Read())
        {
            for (int i = 0; i < 20; i++)
            {
                arti = (i + 1).ToString();
                kontrol = mdr.GetString("c_" + arti);
                if (kontrol == "True")
                {
                    ananmezcheck.ananmez_gnlkontrol(i, check);
                }
            }
            yirmibir.Text = mdr.GetString("txt_1");
        }
        connect.Close();
    }
Run Code Online (Sandbox Code Playgroud)

如果我像这样使用它,它的工作原理:

string sql = "SELECT * …
Run Code Online (Sandbox Code Playgroud)

c# mysql database sql-injection sqlparameter

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

在SQL中“转义查询值”如何安全?(或者为什么这很危险?)[SQL注入]

我正在W3schools上使用SQL示例关注Node.js. 这里

它说下面的代码防止SQL注入。

var adr = 'Mountain 21';
var sql = 'SELECT * FROM customers WHERE address = ' + mysql.escape(adr);
con.query(sql, function (err, result) {
if (err) throw err;
console.log(result);
});
Run Code Online (Sandbox Code Playgroud)

当查询值是用户提供的变量时,您应该转义这些值,以防止SQL注入,SQL注入是破坏或滥用数据库的常见Web黑客技术。

这就是解释。

我想了解这是多么安全。(这如何防止SQL注入)。

另外,以下代码危险吗?
var sql = 'SELECT * FROM customers WHERE address = "Mountain 21"';

mysql sql sql-injection node.js

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