相关疑难解决方法(0)

如何在PHP中阻止SQL注入?

如果插入用户输入而不修改SQL查询,则应用程序容易受到SQL注入的攻击,如下例所示:

$unsafe_variable = $_POST['user_input']; 

mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')");
Run Code Online (Sandbox Code Playgroud)

这是因为用户可以输入类似的内容value'); DROP TABLE table;--,查询变为:

INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--')
Run Code Online (Sandbox Code Playgroud)

可以采取哪些措施来防止这种情况发生?

php mysql sql security sql-injection

2776
推荐指数
28
解决办法
166万
查看次数

如何从"Bobby Tables"XKCD漫画中注入SQL?

只看:

XKCD Strip (来源:https://xkcd.com/327/)

这个SQL做了什么:

Robert'); DROP TABLE STUDENTS; --
Run Code Online (Sandbox Code Playgroud)

我知道这两个'并且--是用于评论,但是这个词也没有DROP被评论,因为它是同一行的一部分?

security validation sql-injection

1070
推荐指数
13
解决办法
19万
查看次数

psycopg2:使用一个查询插入多行

我需要用一个查询插入多行(行数不是常量),所以我需要像这样执行查询:

INSERT INTO t (a, b) VALUES (1, 2), (3, 4), (5, 6);
Run Code Online (Sandbox Code Playgroud)

我知道的唯一方法是

args = [(1,2), (3,4), (5,6)]
args_str = ','.join(cursor.mogrify("%s", (x, )) for x in args)
cursor.execute("INSERT INTO t (a, b) VALUES "+args_str)
Run Code Online (Sandbox Code Playgroud)

但我想要一些更简单的方法.

python postgresql psycopg2

121
推荐指数
7
解决办法
9万
查看次数

参数真的足以阻止Sql注入吗?

我一直在向我的同事们讲道,在这里谈论在SQL查询中使用参数的好处,特别是在.NET应用程序中.我甚至承诺给予他们免受SQL注入攻击的抵抗力.

但我开始怀疑这是否真的如此.是否有任何已知的SQL注入攻击可以成功对抗参数化查询?例如,您可以发送一个导致服务器缓冲区溢出的字符串吗?

当然还有其他考虑因素可以确保Web应用程序是安全的(比如清理用户输入和所有内容),但现在我正在考虑SQL注入.我对MsSQL 2005和2008的攻击特别感兴趣,因为它们是我的主要数据库,但所有数据库都很有趣.

编辑:澄清参数和参数化查询的含义.通过使用参数我的意思是使用"变量"而不是在字符串中构建SQL查询.
所以不要这样做:

SELECT * FROM Table WHERE Name = 'a name'
Run Code Online (Sandbox Code Playgroud)

我们这样做:

SELECT * FROM Table WHERE Name = @Name
Run Code Online (Sandbox Code Playgroud)

然后在查询/命令对象上设置@Name参数的值.

sql database asp.net sql-injection

82
推荐指数
5
解决办法
3万
查看次数

参数化语句可以停止所有SQL注入吗?

如果是,为什么还有那么多成功的SQL注入?仅仅因为一些开发人员太愚蠢而无法使用参数化语句?

sql exploit sql-injection code-injection

76
推荐指数
4
解决办法
3万
查看次数

SQL注入今天是否存在风险?

我一直在阅读有关SQL注入攻击以及如何避免它们的内容,尽管我似乎永远无法在工作中制作"糟糕"的例子,例如看到这篇文章.

我在数据库中创建了一个PHP文件和一个表,有一个值传递$_GET并尝试通过执行删除表bob'); drop table students; --,但它不起作用.PHP自动转义\'并且查询有错误,没有造成任何伤害.尝试复制登录"攻击" AND WHERE 1=1等时出现同样的问题.

示例代码:

<?php
$id = $_GET['id'];

$sql = "INSERT INTO Users (Username) VALUES ($id)";
echo $sql;
mysql_query($sql) or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)

而且我会通过 sql.php?id=1); delete from Users; --

那么这个过时的东西过去常常适用于PHP3或者什么东西,现在甚至新手都不受魔法引号之类的保护?

我在Ubuntu上使用PHP5.

php sql sql-injection

36
推荐指数
12
解决办法
4007
查看次数

测试站点是否容易受到Sql Injection攻击

我正在阅读关于sql注入的内容,如果有一个用户可以输入用户名和登录的表单,我理解它是如何工作的.我没有得到的是没有登录页面的网站如何容易受到sql注入攻击.

http://thecybersaviours.com/how-to-find-out-if-a-website-is-vulnerable-to-sql-injection

它说只需附加'或'='来测试它.我不明白这有助于确定是否存在错误.根本构建的查询在哪里.

sql

17
推荐指数
2
解决办法
16万
查看次数

如何保护此函数免受SQL注入?

public static bool TruncateTable(string dbAlias, string tableName)
{
    string sqlStatement = string.Format("TRUNCATE TABLE {0}", tableName);
    return ExecuteNonQuery(dbAlias, sqlStatement) > 0;
}
Run Code Online (Sandbox Code Playgroud)

c# sql sql-injection

10
推荐指数
2
解决办法
2979
查看次数

ADOdb中的SQL注入和一般网站安全性

我已经做了很多阅读,但仍然不理解100%SQL注入的发生方式!

我想从那些知道基于我的例子的SQL注入的具体例子中看到它,因此它可以被复制,测试和修复.我试过SQL注入我的代码而不能,所以我希望有人来证明我的意思!

1.我认为SQL注入只能通过POST或GET方法进行,这意味着在网站上它应该是帖子形式,例如'注册或搜索'或查询如'search.php?tags = love'?

说这可以注入以下具有POST方法的代码吗?

$name     = trim($_POST['username']);
$mail     = trim($_POST['email']);
$password = trim($_POST['password ']);

   if ($errors == "false") {
    $sql = 
        "INSERT INTO 
           clients 
         SET 
           name='" . mysql_real_escape_string($name) . "',
           mail='" . mysql_real_escape_string($mail) . "', 
           password='" . mysql_real_escape_string(sha1($password)) . "'";
           $connection->execute($sql);

    }
Run Code Online (Sandbox Code Playgroud)

2.另一个有GET方法: rate.php?like&videoID=250&userID=30

$sql = 
    "SELECT 
        videoID 
     FROM 
        likes 
     WHERE 
        videoID = '" .mysql_real_escape_string($videoID). "' AND UID = '" .mysql_real_escape_string($userID). "' LIMIT 1";
        $connection->execute($sql);
Run Code Online (Sandbox Code Playgroud)

请帮助那些对主题感到自由的人,但请使用具体的例子.

提前谢谢,
伊利亚

php mysql security sql-injection adodb

10
推荐指数
1
解决办法
4486
查看次数

PHP保护GET参数

好的,请考虑这个网址:

example.com/single.php?id=21424
Run Code Online (Sandbox Code Playgroud)

对你和我来说很明显,PHP将获取id并通过mysql查询运行它来检索1条记录以在页面上显示它.

反正有一些恶意黑客会弄乱这个url并对我的应用程序/ mysql数据库构成安全威胁吗?

谢谢

php security get

8
推荐指数
1
解决办法
2万
查看次数