标签: sql-injection

sql注入攻击只对具有表单的页面构成威胁吗?

我知道这是一个简单的问题,但在我读过的所有内容中,我从来没有见过这个具体的拼写.

如果您在页面上进行查询,是否需要担心SQL注入攻击?或者,当您要求用户输入时,这只是一个问题吗?

谢谢!

sql security sql-injection web-applications

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

LINQ to Entities和SQL Injection

我看过几篇关于L2E是否容易受到SQL注入影响的文章.

来自MSDN:

尽管在LINQ to Entities中可以进行查询组合,但它是通过对象模型API执行的.与实体SQL查询不同,LINQ to Entities查询不是使用字符串操作或连接组成的,并且它们不易受传统SQL注入攻击的影响.

这是否意味着存在可能有效的"非传统"攻击? 本文有一个非参数化查询的例子 - 可以安全地假设,如果通过变量传入用户提供的数据,它将被参数化吗?

如果我做:

from foo in ctx.Bar where foo.Field = userSuppliedString select foo;
Run Code Online (Sandbox Code Playgroud)

我安全吗?

security linq-to-entities sql-injection

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

这个查询对sql注入安全吗?

该脚本使用PHP,而DB则使用MySQL.这是脚本本身.

$unsafe_variable = $_GET["user-input"];
$sql=sprintf("INSERT INTO table (column) VALUES('%s')",$unsafe_variable);
mysql_query($sql);
Run Code Online (Sandbox Code Playgroud)

有人说如果用户将;DROP TABLE blah;字符串分配给变量$ unsafe_variable,则会删除该表.

但我试过这个例子,

http://localhost/test.php?user-input=DROP%20TABLE%20my_table 
Run Code Online (Sandbox Code Playgroud)

但它没有删除表,而是在表中插入了一个新行(;DROP TABLE blah;).

有人可以解释一下如何用sql注入来攻击这个脚本吗?

php mysql sql-injection

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

如何保护Amazon SimpleDB免受SQL注入?

根据"如果它像鸭子走路,它听起来像鸭子"的原则,亚马逊的SimpleDB支持的SQL风格的查询似乎应该容易受到SQL注入式攻击.这是一个简单的例子,假设攻击者的输入进入变量$ category,并且他可以猜测列名:

$category = "Clothes' OR Category LIKE '%";
$results = $sdb->select("SELECT * FROM `{$domain}` WHERE Category = '$category'");
Run Code Online (Sandbox Code Playgroud)

如果您正在玩主游戏,这些行可以是html-sdb_create_domain_data.php亚马逊PHP SDK(1.2)示例代码中文件第119行的原位替换.

亚马逊发布了引用规则,我想我可以编写一些东西来确保用户输入中的任何"或"被加倍......但我一直都知道转义基本上是一场军备竞赛,这使得参数化成为我选择的武器.例如,使用MySQL.

其他人用来保护SimpleDB查询的是什么?

sql-injection amazon-simpledb

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

如何在MySQL的命令行shell界面中防止SQL注入?

我使用shell脚本与MySQL数据库进行通信.MySQL支持将查询指定为shell参数,如下所示:

mysql my_db -B -N -e "select id from Table"
Run Code Online (Sandbox Code Playgroud)

但是,如果我有一个参数,我想在查询中使用,我如何获得针对注入攻击的保护?

一种天真的方法是将变量值粘贴到请求中,但它不是很安全:

mysql my_db -B -N -e "select id from Table where name='$PARAM'"
Run Code Online (Sandbox Code Playgroud)

是否有任何技巧或记录的接口可以从命令行进行注入安全查询?

mysql sql linux shell sql-injection

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

在Hibernate中防止SQL注入

我已经使用hibernate与我的数据库交互,现在我想使我的数据库层对SQL注入安全,所以我做了一些研究,我发现我的查询应该参数化,所以这是否意味着我只是构建我的HQL查询如:

List mothers = session.createQuery(
"select mother from Cat as cat join cat.mother as mother where cat.name = ?")
.setString(0, name)
.list();
Run Code Online (Sandbox Code Playgroud)

然后它被参数化并受到SQL注入的保护,或者还有其他我需要做的事情......

另外一件事是提到 - " 总是逃避你的数据 "怎么能实现?

hibernate sql-injection hql parameterized

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

mysql_escape_string整个帖子数组?

我想知道是否有可能只需my_sql_escape字符串整个$ _POST和$ _GET数组,所以你不会错过任何变量?

不知道如何测试它或我会自己.谢谢!

php mysql sql sql-injection

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

如何安全地允许用户定义的SQL查询?

我想允许用户使用一些相当灵活的标准查询数据库.我可以使用以下内容:

String slqCmdTxt = "SELECT * FROM TheTable WHERE " + userExpression;
Run Code Online (Sandbox Code Playgroud)

但是,我知道这对SQL注入是开放的.使用参数是好的,但我没有看到允许非常灵活的查询的方法.

如何在不打开SQL注入的情况下允许灵活的数据库查询?


更多细节:

实际上有两个表,一个主表和一个具有属性的辅助表.一个主记录可能具有许多属性.我们想查询两个表中的值.结果将被处理成一个报告,该报告比简单的表格视图更具可读性.数据由C#程序编写,但当前的方向是从用Java编写的组件查询表.

所以我需要一种方法来提供用户输入然后安全地构建查询.对于一组有限的输入,我编写了代码来构建一个带有给定输入和参数值的查询字符串.然后我查看并添加输入值作为参数.这导致复杂的字符串捕捉,难以改变/扩展.

现在我正在使用Java,一些搜索已经发现了像jOOQ这样的SQL语句构建库......

sql sql-injection sql-parametrized-query

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

检测源代码中的SQL注入

请考虑以下代码段:

import MySQLdb

def get_data(id):
    db = MySQLdb.connect(db='TEST')
    cursor = db.cursor()
    cursor.execute("SELECT * FROM TEST WHERE ID = '%s'" % id)

    return cursor.fetchall()

print(get_data(1))
Run Code Online (Sandbox Code Playgroud)

代码中存在一个主要问题 - 它容易受到SQL注入攻击,因为查询不是通过DB API参数化的,而是通过字符串格式化构建的.如果以这种方式调用函数:

get_data("'; DROP TABLE TEST -- ")
Run Code Online (Sandbox Code Playgroud)

将执行以下查询:

SELECT * FROM TEST WHERE ID = ''; DROP TABLE TEST --  
Run Code Online (Sandbox Code Playgroud)

现在,我的目标是分析项目中的代码并检测可能容易受到SQL注入攻击的所有位置.换句话说,查询是通过字符串格式构造的,而不是在单独的参数中传递查询参数.

在静态代码分析软件包的帮助下pylint,它是否可以静态解决pyflakes


我知道sqlmap流行的渗透测试工具,但据我所知,它正在对抗Web资源,通过HTTP请求将其作为黑盒进行测试.

python sql security sql-injection static-code-analysis

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

Spring SQL Injection中的@Query注释是否安全?

对于Spring,传递给@Query注释的字符串的参数是否被视为纯数据,例如,如果您使用的是PreparedStatement类或任何旨在阻止SQL注入的方法?

final String MY_QUERY = "SELECT * FROM some_table WHERE some_column = ?1";

@Query(value=MY_QUERY, nativeQuery = true)
List<SomeEntity> findResults(String potentiallyMaliciousUserInput);
Run Code Online (Sandbox Code Playgroud)

结论:上面的代码是否容易受到SQL注入的影响?

java spring sql-injection spring-annotations

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