仓酷云

标题: 带来一篇使用体系宁静加固之防SQL注进办理*** [打印本页]

作者: 仓酷云    时间: 2015-1-14 20:32
标题: 带来一篇使用体系宁静加固之防SQL注进办理***
欢迎大家来到仓酷云论坛!前一段工夫笔者在向导的布置下开辟了一套针对IT体系保护职员的绩效审核常识办理体系,体系上线后经由几回调优体系运转一般。惋惜优美的光阴老是太长久,2月份团体派国际做宁静的厂商对企业信息化体系宁静扫描,发明该体系存在SQL注进式毛病、数据库提权宁静毛病、暗码明文及附件上传宁静隐患。向导期限对该体系举行宁静整改事情,因而笔者对该体系加班加点举行了一系列的宁静加固。
应对办法以下:
1)关于SQL注进式毛病办理计划是如许的在用户对体系举行操纵时起首举行不法字符校验;
2)对数据库提权毛病成绩:1、接纳数据库体系账号与使用账号分别即创立使用步伐必要会见的账号;2、接纳压缩权限并设置指定IP地点能够近程会见数据库;
3)对用户暗码举行加密保留;
4)上传附件校验有黑名单变化成白名双方式。
附相干代码以下:
1、防SQL注进代码以下所示(必要的网友间接拷贝后放在本人的工程间接编译后挪用便可轻松完成防SQL注进):
packageaction;
publicclassStringUtil{
publicStringUtil(){
}

publicstaticStringreplace(Stringstr,Stringsubstr,Stringrestr){
String[]tmp=split(str,substr);
Stringreturnstr=null;
if(tmp.length!=0){
returnstr=tmp[0];
for(inti=0;i<tmp.length-1;i++)
returnstr=dealNull(returnstr)+restr+tmp[i+1];
}
returndealNull(returnstr);
}

publicstaticString[]split(Stringsource,Stringdiv){
intarynum=0,intIdx=0,intIdex=0,div_length=div.length();
if(source.compareTo("")!=0){
if(source.indexOf(div)!=-1){
intIdx=source.indexOf(div);
for(intintCount=1;;intCount++){
if(source.indexOf(div,intIdx+div_length)!=-1){
intIdx=source.indexOf(div,intIdx+div_length);
arynum=intCount;
}else{
arynum+=2;
break;
}
}
}else
arynum=1;
}else
arynum=0;

intIdx=0;
intIdex=0;
String[]returnStr=newString[arynum];

if(source.compareTo("")!=0){
if(source.indexOf(div)!=-1){
intIdx=(int)source.indexOf(div);
returnStr[0]=(String)source.substring(0,intIdx);

for(intintCount=1;;intCount++){
if(source.indexOf(div,intIdx+div_length)!=-1){
intIdex=(int)source
.indexOf(div,intIdx+div_length);

returnStr[intCount]=(String)source.substring(intIdx
+div_length,intIdex);

intIdx=(int)source.indexOf(div,intIdx+div_length);
}else{
returnStr[intCount]=(String)source.substring(intIdx
+div_length,source.length());
break;
}
}
}else{
returnStr[0]=(String)source.substring(0,source.length());
returnreturnStr;
}
}else{
returnreturnStr;
}
returnreturnStr;
}

publicstaticbooleansql_inj(Stringstr){
Stringinj_str="|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|;|or|-|+|,";
Stringinj_stra[]=split(inj_str,"|");
for(inti=0;i<inj_stra.length;i++){
if(str.indexOf(inj_stra)>=0){
returntrue;

}
}
returnfalse;
}

privatestaticStringdealNull(Stringstr){
Stringreturnstr=null;
if(str==null)
returnstr="";
else
returnstr=str;
returnreturnstr;
}

//publicstaticvoidmain(String[]args){
//if(sql_inj("test")==true)
//System.out.println("不法字符");
//else
//System.out.println("输出内容正当");
//
//}
}

2、MD5加密代码以下所示:
packageaction;
importjava.security.MessageDigest;
/**
*<p>
*Title:MD5加密和考证
*</p>
*
*<p>
*Description:
*</p>
*
*<p>
*Copyright:Copyright(c)2006
*</p>
*
*<p>
*Company:
*</p>
*
*@authornotattributable
*@version1.0
*/
publicclassMD5{
publicMD5(){
}

/**
*MD5加密ComputestheMD5fingerprintofastring.
*
*@returntheMD5digestoftheinput<code>String</code>
*/
publicstaticStringcompute(StringinStr){
MessageDigestmd5=null;
try{
md5=MessageDigest.getInstance("MD5");
}catch(Exceptione){
System.out.println(e.toString());
e.printStackTrace();
return"";
}
char[]charArray=inStr.toCharArray();
byte[]byteArray=newbyte[charArray.length];

for(inti=0;i<charArray.length;i++){
byteArray=(byte)charArray;
}

byte[]md5Bytes=md5.digest(byteArray);
StringBufferhexValue=newStringBuffer();
for(inti=0;i<md5Bytes.length;i++){
intval=((int)md5Bytes)&0xff;
if(val<16){
hexValue.append("0");
}
hexValue.append(Integer.toHexString(val));
}

returnhexValue.toString();
}

/**
*考证MD5
*
*@paramcompareStr
*String要对照的字符串
*@parammd5Str
*String加密后的字符串
*@returnboolean考证经由过程前往true,不然前往false
*/
publicstaticbooleancompare(StringcompareStr,Stringmd5Str){
StringcomputeStr=compute(compareStr);
if(computeStr.equals(md5Str)){
returntrue;
}else{
returnfalse;
}
}

publicstaticvoidmain(String[]args){
System.out.println("aa:=="+compute("aa"));
System.out.println(compare("aa","4124bc0a9335c27f086f24ba207a4912"));
}

}
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的好朋友们!
作者: 变相怪杰    时间: 2015-1-16 19:53
标题: 带来一篇使用体系宁静加固之防SQL注进办理***
主流Linux发行版都自带非常详细的文档(包括手册页和FAQ),从系统安装到系统安全,针对不同层次的人的详尽文档,仔细阅读文档后40%问题都可在此解决。
作者: 金色的骷髅    时间: 2015-1-24 23:09
如果上面的措施没有解决问题,此时你就需要Linux社区的帮助了。 Linux的使用者一般都是专业人士,他们有着很好的电脑背景且愿意协助他人。
作者: 不帅    时间: 2015-2-2 17:52
当然你不需搭建所有服务,可以慢慢来。自己多动手,不要非等着别人帮你解决问题。
作者: 精灵巫婆    时间: 2015-2-8 05:59
和私有操作系统不同,各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者是往往不够的。
作者: admin    时间: 2015-2-25 00:28
Linux?最大的优点在于其作为服务器的强大功能,同时支持多种应用程序及开发工具,所以Linux操作系统有着广泛的应用空间。
作者: 愤怒的大鸟    时间: 2015-3-7 18:27
Linux只是个内核!这点很重要,你必须理解这一点。只有一个内核是不能构成一个操作系统的。
作者: 谁可相欹    时间: 2015-3-15 19:12
期间我阅读了不少关于Linux的相关资料,其中也不乏一些有趣的小故事,这既丰富了我的课余生活,也让我加深了对一些术语的理解,比玩游戏强多了。?
作者: 小妖女    时间: 2015-3-22 04:28
学习Linux系统在服务中的配置方法及使用方法。Linux在服务器中应用相当广,应对常用的apache,samba,ftp等服务器基本配置清楚了解。[重点,应巩固学习]




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2