防止mysql注入

简单背景:sql注入是web安全领域里一个挺热门的话题。sql注入主要是由于拼接sql语句造成的,攻击者通过传入非法的参数使拼接成的sql变成非程序员本意的sql查询,攻击者可以完成登录,删除用户数据甚至危害系统安全。

通过stackoverflow,可以看到比较安全的防范方法,主要有两种方式:mysqli和pdo。但是这两种都是通过预定义和参数绑定处理的,几乎可以防止任何的sql注入。

对于只用到mysql基础查询的用户来说,可以通过一些转义和过滤的方式来防范一些简单的sql注入。代码如下:

<?php
public function prevent_injection($temp){
        //过滤关键字
        $temp = preg_replace(‘/select|and|or|insert|update|delete/i‘, ‘‘, $temp);
        if(is_numeric($temp)){
            //类型检测
            $temp = intval($temp);
        }else if(!get_magic_quotes_gpc()){
             //转义
             $temp = addslashes($temp);
        }
        return $temp;
    }

注:通过addslashes和mysql_real_escape_string方法,攻击者可以通过编码的方式绕过检测,但是对于一些简单的攻击这样处理也可以。

时间: 2024-10-22 16:48:58

防止mysql注入的相关文章

mysql注入篇

博客这个东西真的很考验耐心,每写一篇笔记,都是在艰难的决定中施行的,毕竟谁都有懒惰的一面,就像这个,mysql注入篇,拖拖拖一直拖到现在才开始总结,因为这个实在是太多太杂了,细细的总结一篇太烧脑. 由于我没有找见php的实战本地源码,所以只好用一些漏洞平台的源码来演示了,演示不了的,只能列代码,没有实操图.毕竟找不见源码,,没法... 首先我们都知道mysql数据库和Access数据库的不同,不同在mysql是分多个数据库名的. 就像像我上图贴的这个格式一样,原谅我是在是没有本地源码,连数据库的

MYSQL注入基础及绕过技巧总结

1.MYSQL注入原理:用户输入的内容被当作sql语句来执行 2.MYSQL注入实战心得:一试参数,二试类型,三试绕过 一试参数:任何注入参数,都需确定其类型(数字还是字符),此处指的是注入参数的类型(***) 常用测试字符:引号(单双),圆括号,引号加圆括号...... 二试类型:五大类(BEUST):布尔型盲注.报错型注入.UNION联合查询型注入.时间延迟型盲注.堆查询注入 布尔型盲注:and 1=1 , and 1=2 , or 1=1 , or 1=2 ...... 报错型注入: fl

Mysql注入方式

0x00 – 报错注入 mysql 报错注入, 我们有时候会遇到没有正常数据回显的注入. 这时候就需要报错注入来获得我们需要的数据. 我们经常用到的有 floor(),updatexml(),extractvalue() 通过查找资料发现还有一些函数. 由于这三个比较通用, 也就是在大部分 mysql 版本中都有, 其他的有些可能在低版本里没有. floor() 语句:and (select 1 from (select count(*),concat(version(),floor(rand(

Mysql注入备忘

mysql注入中常用到的函数 database()查询当前数据库 current_user()查询当前用户 @@datadir查询数据库路径 @@version_compile_os查询操作系统版本 version()查询数据库版本 concat_ws(separator,str1, str2)含有分割符连接字符串 concat_ws(0x3a, version(), user(), database()) group_concat()含有分割符连接字段 group_concat([DISTIN

MYSQL注入天书之开天辟地

MYSQL注入天书 ---------Sqli-labs使用手册 ? MYSQL注入天书????1 写在前面的一些内容????1 SQLI和sqli-labs介绍????2 Sqli-labs下载????2 Sqli-labs安装????2 第一部分/page-1 Basic Challenges????3 Background-1 基础知识????3 Less-1????10 Less-2????14 Less-3????15 Less-4????16 Background-2 盲注的讲解??

虚拟机突破到实体机的侥幸,mysql注入失败之后的曙光!

事情缘由是我尝试进入我高中母校的一个二级网站,最后一件事降临我头上, 实在觉得好运,有趣极了,这也是 我为什么喜欢做这种事("逛逛"我的母校网站)打发时间:经历绝望和成就感. 截图一张: 这是360针对win服务器推出的主机卫士,它对菜刀连接做出了拦截,code居然是999,360的人真有情调啊. 我是很欣喜的,母校网站安全水平又上一层次了.然而就让人大吃一惊了,这主机卫士只拦截最最常见的那些,如果对常用恶意代码与工具有个排行榜的话,它只拦截排第一的,是的,排第二的它不拦. 360在老

MYSQL注入天书之基础知识

第一部分/page-1 Basic Challenges Background-1 基础知识 此处介绍一些mysql注入的一些基础知识. (1)注入的分类---仁者见仁,智者见智. 下面这个是阿德玛表哥的一段话,个人认为分类已经是够全面了.理解不了跳过,当你完全看完整个学习过程后再回头看这段.能完全理解下面的这些每个分类,对每个分类有属于你的认知和了解的时候,你就算是小有成就了,当然仅仅是sql注入上. 基于从服务器接收到的响应? ▲基于错误的SQL注入 ▲联合查询的类型 ▲堆查询注射 ▲SQL

从mysql注入到getshell

SQL注入就是一种通过操作输入(可以是表单,可以是get请求,也可以是POST请求等)相关SQL语句,并且能让该语句在数据库中得以执行,从而进行攻击的技术.最主要的原因就是没有对用户输入数据的合法性或者说是客户端提交的可变参数进行严格的检查和过滤,从而导致应用程序存在该漏洞.这篇文章主要是讲述通过一个mysql注入漏洞,通过os-shell执行echo命令获取webshell的攻击过程,大牛绕过,写这篇文章主要表扬自己开始有了自己的想法,可能该想法是其他人早就知道的! 本来通过管理后台弱口令进入

MySQL注入工具sqlsus

sqlsus是使用Perl语言编写的MySQL注入和接管工具.它可以获取数据库结构,实施注入查询,下载服务器的文件,爬取可写目录并写入后门,以及复制数据库文件等功能.它提供Inband和盲注两种注入模式,获取数据库权限. 使用时,用户首先使用该工具生成一个配置文件.在配置文件中,设置注入路径以及注入的各项参数,然后再加载该文件,实施渗透测试.

MySQL注入中load_file()函数的应用

常用的一些Load_File()函数攻击手法: MySQL注入中load_file()函数的应用