判断以及防止SQL注入
SQL注入是目前黑客最常用的攻击手段,它的原理是利用数据库对特殊标识符的解析强行从页面向后台传入。改变SQL语句结构,达到扩展权限、创建高等级用户、强行修改用户资料等等操作。
那怎么判断是否被SQL注入了呢?
通过SQL注入的原理我们知道,判断SQL注入可以通过页面传入的数据,后台不应该相信从后台传入的任何数据特别是特殊整型参数和特殊字符参数!
防止SQL注入其实也很简单
1.检查变量数据类型和格式
只要是固定格式的变量,在SQL语句执行前,应该严格按照固定格式检查,确保变量是我们预想的格式!
2.过滤特殊符号
对于无法确定固定格式的变量,一定要进行特殊符号过来或转移处理,一面之星SQL时有歧义。
当我们上传图片的时候
enctype=\”multipart/form-data\”
enctype=”multipart/form-data”
- 1
- 2
- 1
- 2
没有“/“,表单中enctype=”multipart/form-data”的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form- data,才能完整的传递文件数据,进行下面的操作.
3.绑定变量,使用预编译语句
实际上,绑定变量使用预编译语句是预防SQL注入的最佳方法,使用预编译的SQL语句语义不会发生改变。在SQL语句中,变量用问号?表示,黑客即使本事再大,也无法改变SQL语句的格式,从根本上杜绝了SQL注入攻击的发生。
4.数据库信息加密安全
有时候数据库信息泄露了,我们应该对数据库的密码等信息进行加密(MD5等),这样信息泄露,损失也可以在控制在一定范围内。
使用JSP的时候要注意
1.不要随意开一生产环境汇总Webserver的错误显示。
2.永远不要相信来自用户端的变量输入,有固定格式的变量一定要严格检查对应的格式,没有固定格式的变量需要对引号等特殊字符进行必要的过滤转义。
3.使用预编译绑定变量的SQL语句
4.做好数据库账号权限管理
5.严格加密处理用户机密信息
一个好的程序一定要注意安全性,否则只适合练手。
判断以及防止SQL注入的更多相关文章
- 怎样判断有没有SQL注入?
最为经典的单引号判断法: 在参数后面加上单引号,比如: http://xxx/abc.php?id=1' 如果页面返回错误,则存在 Sql 注入. 原因是无论字符型还是整型都会因为单引号个数不匹配而报 ...
- 怎样判断有没有SQL注入漏洞及原理?
来源:实验楼 最为经典的单引号判断法: 在参数后面加上单引号,比如: http://xxx/abc.php?id=1' 如果页面返回错误,则存在 Sql 注入. 原因是无论字符型还是整型都会因为单引号 ...
- Java程序员从笨鸟到菜鸟之(一百零一)sql注入攻击详解(二)sql注入过程详解
在上篇博客中我们分析了sql注入的原理,今天我们就来看一下sql注入的整体过程,也就是说如何进行sql注入,由于本人数据库和网络方面知识有限,此文章是对网上大量同类文章的分析与总结,其中有不少直接引用 ...
- web安全之sql注入实例(5.0之前的)
web安全之sql(5.0之前)注入实例 5.0之前的数据库没有information库. 所以这里需要运用的是load_file()函数来获取信息. 1.判断是否有sql注入,用and 1=1 和 ...
- 通过 HTTP 头进行 SQL 注入
在漏洞评估和渗透测试中,确定目标应用程序的输入向量是第一步.有时,当做web应用程序测试时,SQL注入漏洞的测试用例通常局限于特殊的输入向量GET和POST变量.那么对于其他的HTTP头部参数呢?难道 ...
- SQL注入原理二
随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多. 但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候 ,没有对用户输入数据的合法性进行判断,使应用程序存 ...
- 《sql注入攻击与防御 第2版》的总结 之 如何确定有sql注入漏洞
看完<sql注入攻击与防御 第2版>后,发现原来自己也能黑网站了,就一个字:太爽了. 简单总结一下入侵步骤: 1.确定是否有sql注入漏洞 2.确定数据库类型 3.组合sql语句,实施渗透 ...
- 通过 HTTP 头进行 SQL 注入(转)
英文原文:DatabaseTube,翻译:开源中国 在漏洞评估和渗透测试中,确定目标应用程序的输入向量是第一步.这篇文章解释了别人是如何通过HTTP头部对你的数据库进行SQL注入攻击的,以及讨论下选择 ...
- SQL注入(一) - 入门篇
什么是SQL注入 可能大家还不是对SQL注入这个概念不是很清楚,简单地说,SQL注入就是攻击者通过正常的WEB页面,把自己SQL代码传入到应用程序中,从而通过执行非程序员预期的SQL代码,达到窃取数据 ...
随机推荐
- [FJOI2015]火星商店问题(分治+可持久化)
题目描述 火星上的一条商业街里按照商店的编号1,2 ,…,n ,依次排列着n个商店.商店里出售的琳琅满目的商品中,每种商品都用一个非负整数val来标价.每个商店每天都有可能进一些新商品,其标价可能与已 ...
- javascript之复习(框架里的方法们)
继上次整理,一些东西没有整理完.就写在这.可能比较乱比较杂,因为都是整理的一些东西,也没有到做成专题的程度. 1.String.repeat() 大家要实现重复一个字符串的重复怎么写呢,反正我的第一想 ...
- Manthan, Codefest 18 (rated, Div. 1 + Div. 2) C D
C - Equalize #include<bits/stdc++.h> using namespace std; using namespace std; string a,b; int ...
- Nginx环境的搭建
源码安装 不同发行版使用的安装程序都不同,所以官方提供了源代码,我们需要将原代码编译后再安装. 源程序使用C语言开发,所以需要安装C语言的编译环境. 安装Nginx环境和第三方支持库 yum inst ...
- bzoj2554: Color
Description 有n个球排成一列,每个球都有一个颜色,用A-Z的大写字母来表示,我们每次随机选出两个球ball1,ball2,使得后者染上前者的颜色,求期望操作多少次,才能使得所有球的颜色都一 ...
- vcftools报错:Writing PLINK PED and MAP files ... Error: Could not open temporary file.解决方案
一般来说有两种解决方案. 第一种:添加“--plink-tped”参数: 用vcftools的“--plink”参数生成plink格式文件时,小样本量测试可以正常生成plink格式,用大样本量时产生W ...
- /bin/bash^M:损坏的解释器: 没有那个文件或目录
由于在Windows下换行是\n\r,在Linux下打开多了\r,所以需要删除.删除命令 :sed -i 's/\r$//' filename -i插入 s替代模式 \r$表示任何以\r结束的字符 整 ...
- springmvc跨域上传文件问题
把以下文件放到webapps的root文件夹下: 1.clientaccesspolicy.xml <?xml version="1.0" encoding="ut ...
- python字节(bytes)
在 3.x 中,字符串和二进制数据完全区分开.文本总是 Unicode,由 str 类型表示,二进制数据则由 bytes 类型表示.Python 3 不会以任意隐式的方式混用 str 和 bytes, ...
- Storm常用的类
BaseRichSpout (消息生产者)BaseBasicBolt (消息处理者)TopologyBuilder (拓扑的构建器)Values (将数据存放到values ,发送到下个组件)Tupl ...