标签: sql-injection

用php注入SQL攻击

这是我的计算机安全类的任务的一部分,所以我不是在寻找具体的答案,只是一些帮助.

我们得到了一个错误的程序(在php中)来控制一个sql数据库(一个银行帐户),我们必须找到一种方法来创建一个SQL注入攻击,让我们在不知道它的ID的情况下登录到一个帐户.

我很确定我知道漏洞在哪里,但我似乎无法让我的攻击工作.

有问题的代码(它有点长,但唯一重要的部分是第一部分):

<html><head><title>FrobozzCo Community Credit Union</title></head>
<body>
<h1>FrobozzCo Community Credit Union</h1>
<h4><i>We're working for GUE</i></h4>
<hr>
<?php

$debugmode = 1;
function debug($msg) {

    global $debugmode;

    if ($debugmode) {
        echo "<h4>$msg</h4>\n";
    }
}

$thispage = 'FCCU.php';
echo "<form action='$thispage' method='post' name='theform'>\n";
$dbuser = 'fccu';
$dbpass = 'fccubucks';
$dbhost = 'localhost';
$dbname = $dbuser;

$PARAM = array_merge($_GET, $_POST);

// get username and password from form
if (!$PARAM['id'] || !$PARAM['password']) {
    login();
} else { // otherwise, attempt to authenticate
    $id …
Run Code Online (Sandbox Code Playgroud)

php mysql sql sql-injection

29
推荐指数
3
解决办法
4511
查看次数

INSERT上的SQL注入

我在我们公司的Intranet上创建了一个小型调查网页.无法从外部访问此网页.

表单只是几个单选按钮和一个注释框.

我想保持良好的编码实践,并希望防范SQL注入.

SQL注入是否可以在带有文本框注释的insert语句中发生?如果是这样,我如何使用.NET 2.0防范它?

c# sql sql-injection

28
推荐指数
2
解决办法
4万
查看次数

为什么使用mysql预处理语句比使用常见转义函数更安全?

在另一个问题中有评论说:

"当谈到数据库查询时,总是尝试使用准备好的参数化查询.mysqli和PDO库支持这一点.这比使用诸如mysql_real_escape_string之类的转义函数更安全."

资源

所以,我想问的是:为什么准备参数化查询更安全?

php mysql security sql-injection prepared-statement

27
推荐指数
3
解决办法
2万
查看次数

使用Magento方法编写插入查询,注意SQL注入

我正在使用Magento的功能来插入和更新查询.我的要求是在进行这些类型的查询时我想要处理SQL注入.但我无法找到Magento是如何做到这一点的.我正在提供一个开始样本.请给我一个完整的例子.

<?php
$write = Mage::getSingleton("core/resource")->getConnection("core_write");
$sql = "INSERT INTO Mage_Example (Name, Email, Company, Description, Status, Date)
    VALUES ('$name', '$email', '$company', '$desc', '0', NOW())";
?>
Run Code Online (Sandbox Code Playgroud)

现在我想更改上面的查询以防止可能的SQL注入.我不想使用mysql_real_escape_string()PHP 的默认" "内置函数.任何人都可以使用" $write"DB Handler 为我提供一个有用的解决方案.

任何帮助是极大的赞赏.

sql-injection magento

27
推荐指数
2
解决办法
5万
查看次数

Delphi - 防止SQL注入

我需要保护应用程序免受SQL注入.应用程序使用ADO连接到Oracle,并搜索用户名和密码以进行身份​​验证.

从我读到现在开始,最好的方法是使用参数,而不是将整个SQL分配为字符串.像这样的东西:

query.SQL.Text := 'select * from table_name where name=:Name and id=:ID'; 
query.Prepare; 
query.ParamByName( 'Name' ).AsString := name; 
query.ParamByName( 'ID' ).AsInteger := id; 
query.Open;
Run Code Online (Sandbox Code Playgroud)

另外,我正在考虑验证来自用户的输入,并删除删除,插入,选择等SQL关键字......任何不同于普通ASCII字母和数字的输入字符都将被删除.

这样可以保证我的安全级别最低?

我不想使用除Delphi 7标准和Jedi之外的任何其他组件.

sql delphi oracle sql-injection

27
推荐指数
3
解决办法
4610
查看次数

Spring JDBC是否提供针对SQL注入攻击的任何保护?

Spring的JdbcTemplate抽象提供了许多功能,但它是否可以以提供SQL注入攻击保护的方式使用?

例如,就像使用PreparedStatement并使用正确定义的参数化获得的保护类型一样.

spring sql-injection jdbctemplate

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

测试Web应用程序中的安全漏洞:最佳实践?

我正在开发一个Web应用程序.就像一个合适的人一样,我过去常常使用像Joomla这样的东西制作出令人敬畏的东西,但现在终于弄脏了PHP,MySQL和CodeIgniter.

当您制作可以处理大量数据的严肃网页应用时,我应该采取哪些预防措施来对付我的数据输入以完全消毒它?我知道有明显的修剪,逃逸,xss清洁等 - 但我应该采用什么其他技术来停止注入数据库?

不仅如此,还有任何非破坏性的数据库注入代码,我可以测试我的所有输入吗?就像在,它会注入一些可见的东西,但实际上对我的测试数据库没有任何伤害?我不是一个黑客,需要一点指导.

黑客使用什么其他常见方法来破坏或读取用户的数据,我如何自己检查?我没有钱雇用一名安全顾问,因为我只有16岁,但对计算机有很好的经验,如果给出一些关于它们的提示,我相信我可以做一些技巧.

我知道这是一大堆问题但总结一下,你做了什么来确保一切都是100%安全的?

php mysql security sql-injection

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

如何使用脚本或程序自动测试我的网站是否存在SQL注入攻击?

我已经搜索过并在SO上找到了一个很好的讨论,但它已有几年了.

有什么程序,或者我可以运行一个简单的脚本,在我的整个站点的URL中找到SQL注入漏洞?

我希望运行一个脚本(PHP)或程序来抓取我的网站,从链接跳转到链接,试图找到漏洞,并在发现时存储该URL,以便我有一个我需要修复的URL列表.

这存在吗?

php sql sql-injection

25
推荐指数
2
解决办法
3万
查看次数

在"ORDER BY"条款之后可以提出任何可能造成安全风险的事情吗?

基本上,我想要做的是:

mysql_query("SELECT ... FROM ... ORDER BY $_GET[order]")
Run Code Online (Sandbox Code Playgroud)

他们显然可以通过在其中放置无意义来轻松地创建SQL错误,但mysql_query只允许执行1个查询,因此他们不能放置类似的东西1; DROP TABLE ....

除了创建语法错误之外,恶意用户是否可以做任何损害?

如果是这样,我该如何清理查询?

$_GET['order']变量中有很多逻辑构建在类似SQL的语法中,所以我真的不想改变格式.


澄清$_GET['order']一下,不只是单个字段/列.它可能是这样的last_name DESC, first_name ASC.

php mysql database sql-injection

24
推荐指数
3
解决办法
3967
查看次数

如何使用JPA和Hibernate防止SQL注入?

我正在使用hibernate开发一个应用程序.当我尝试创建一个登录页面时,出现了Sql Injection的问题.我有以下代码:

@Component
@Transactional(propagation = Propagation.SUPPORTS)
public class LoginInfoDAOImpl implements LoginInfoDAO{

@Autowired
private SessionFactory sessionFactory;      
@Override
public LoginInfo getLoginInfo(String userName,String password){
    List<LoginInfo> loginList = sessionFactory.getCurrentSession().createQuery("from LoginInfo where userName='"+userName+"' and password='"+password+"'").list();
    if(loginList!=null )
        return loginList.get(0);
    else return null;   
          }
      }
Run Code Online (Sandbox Code Playgroud)

在这种情况下如何防止Sql注入?loginInfo表的create table语法如下:

create table login_info
  (user_name varchar(16) not null primary key,
  pass_word varchar(16) not null); 
Run Code Online (Sandbox Code Playgroud)

java sql hibernate jpa sql-injection

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