从事java web开发也有几年了,可是开发中的安全问题却越来越不以为然。直到不久遇到一黑软,瞬间sql注入,少时攻破网站数据库。还好,我还没有用root级的用户连接数据库。不过也没有什么用了,因为我的懈怠用户表的帐号密码没有加密。对方可以很容易的进入网站后台为所欲为了。更让我郁闷的是文件上传我没做类型限制,唉,不用说了上传一个webshell文件。可怜的服务器成了赤裸羔羊。回过头来痛定思痛,决定重新规范web开发的安全标准,总结如下。

1.绝对绝对绝对要采用预处理的方式来进行sql操作,如果实在需要做sql语句的拼接,那么请做输入信息的过滤。selet,update,delete,insert,and,%,',_,这些都屏蔽了吧。

2.一般的sql注入都是从网站的前台网页寻找漏洞,建议针对前台操作和后台操作分别建立数据库操作用户。前台的用户只赋予实际需要的基本权限。后台用户可权限可以宽松些但也只能针对当前库。切不可用root级别的用户作数据库连接。否则数据丢了,你都没地方哭去。

3.用户登录表的密码一定要加密,如果可以也可将用户名一并加密。这是以防万一的最后手段,当对方看你的用户登录表的时候起码看到也不知道是什么。

4.jsp文件集中放到指定的文件夹下,如果你使用struts那么你可以将struts使用的文件放在WEB-INF目录下的某个文件夹中,因为该WEB-INF文件夹网站浏览用户是看不到的。

5.文件上传一定要做类型检查,一些jsp,php,asp等程序文件坚决不能让其上传。如果你用的是linux 下apache+tomcat 做的jk连接,你可以将文件直接上传到apache目录,或者用ln作软连接,万一对方上传了jsp文件你没判断出来,那么也是传到了apache目录下,你在jk指向中

将jsp文件指定到tomcat中某一文件夹,对方在浏览器中是无法访问上传的jsp文件的。

6.日志,建议增加服务的访问日志,记录来访者的IP,传递参数,对后台操作用户建立日志,记录其操作内容。完善的日志记录可以帮助你发现潜在的危险,找到已经发生的问题。

临时想到这么多,写的很粗糙以后再慢慢补充完善。最后忠告我的程序员朋友,做人要低调,做事要踏实,这年头随便一个网民登陆个黑客软件就没准吧你黑了。当你发现黑你网站的那个人不过是个业余网民,相信你一定有被小baby暗算,恨不能找块豆腐撞死的感觉。算了不说了,总之低级问题总会出在懈怠的时候,所以精神点。

【转】 java web开发之安全事项的更多相关文章

  1. Java Web开发中MVC设计模式简介

    一.有关Java Web与MVC设计模式 学习过基本Java Web开发的人都已经了解了如何编写基本的Servlet,如何编写jsp及如何更新浏览器中显示的内容.但是我们之前自己编写的应用一般存在无条 ...

  2. 【原创】三分钟教你学会MVC框架——基于java web开发(2)

    没想到我的上一篇博客有这么多人看,还有几位看完之后给我留言加油,不胜感激,备受鼓励,啥都别说了,继续系列文章之第二篇.(如果没看过我第一篇博客的朋友,可以到我的主页上先浏览完再看这篇文章,以免上下文对 ...

  3. [Java Web整合开发王者归来·刘京华] 1、 Java Web开发

      目录: 1.Web技术简介 2.动态网站与静态网站 3.Java Web开发模式 4.JavaScript简介 1.Web技术简介 PS: 最近还有更凶残的技术,即整个操作系统都是基于Web的,如 ...

  4. 个人的java web开发书单

    首发至个人博客http://www.zidafone.com/blog/36 以下是对一些读过的书和一些买后随便翻了翻的书的个人感觉.都是java web开发的程序员可能接触的书,其他的如设计/手机开 ...

  5. java web开发必备知识

    从各种招聘网站的要求上筛选出了一些java开发的一些基本的要求,对照自身看看有哪些缺陷. java基础 既然是java web开发,java SE肯定要学好了. 多线程,IO,集合等,对队列,缓存,消 ...

  6. Java Web开发之详解JSP

    JSP作为Java Web开发中比较重要的技术,一般当作视图(View)的技术所使用,即用来展现页面.Servlet由于其本身不适合作为表现层技术,所以一般被当作控制器(Controller)所使用, ...

  7. Java Web开发介绍

    转自:http://www.cnblogs.com/pythontesting/p/4963021.html Java Web开发介绍 简介 Java很好地支持web开发,在桌面上Eclipse RC ...

  8. 《Java web 开发实战经典》读书笔记

    去年年末,也就是大四上学期快要结束的时候,当时保研的事情确定了下来,终于有了一些空闲的时间可以学点实用的技术. 之前做数据库课程设计的时候,也接触过java web的知识,当时做了一个卖二手书籍的网站 ...

  9. 使用Eclipse+Maven+Jetty构建Java Web开发环境(几个教程综合集成2014发行)

    工作需要使用Jetty由于web集装箱,得知Eclipse+Maven+Jetty该组合是非常好的,因此,要在网上找了很多教程,但不写或多或少特定的或过时的内容而导致最终的配置失败,易于配置为未来的同 ...

随机推荐

  1. ARM汇编

    ARM汇编 ISA ISA即指指令集架构(Instruction Set Architecture)是与程序设计有关的计算机架构的一部分,包括本地数据类型.指令.寄存器.地址模式.内存架构.中断和意外 ...

  2. mysql登录不了及修改密码

    安装mariadb,默认是无密码的,但一般是指要设置密码的.在设置密码时出现各种问题,可能还是不太明白其原理. 一下我尝试了两种方法,但都失败了.下面这两个是我尝试的方法: 一.网上最多的方法是 1. ...

  3. 使用Application对象简单完成网站总访问人数的统计

      Global.asax文件: using System.IO; protected void Application_Start(object sender, EventArgs e) { Fil ...

  4. 完成Matrix丶Kingdom PPT后的感想

    这次Presentation是我在这节课的第一次上台演讲,让我感悟良多. 具体对我的PPT有兴趣的朋友可以call我,我会共享给大家. 这次老师布置的任务对我而言很有意义.首先,我作为最后一组,我欣赏 ...

  5. 记录一些PHP7RCC1编译问题

    1,php7rc1源码编译undefined symboles的问题 自己计划将php7环境部署到cubieboard上,懒得去找别人预编译的版本,所以动手从源码编译,中间遇到了一个小问题,此处记录一 ...

  6. Linux中的入口函数main

    main()函数,想必大家都不陌生了,从刚开始写程序的时候,大家便开始写main(),我们都知道main是程序的入口.那main作为一个函数,又是谁调用的它,它是怎么被调用的,返回给谁,返回的又是什么 ...

  7. 笔记 线程(threads)

    线程:CPU使用的基本单元(线程ID.程序计数器.寄存器集合.栈). 多线程:一个进程有多个线程 多线程的优点: 增加响应度:当一个交互程序部分阻塞,该程序能继续执行 一个应用程序在同一地址空间有多个 ...

  8. C++命名空间问题

    名称空间支持是一项c++特性,是用来解决在编写大型程序中不同文件(厂商)中相同变量名问题.​ 例如:有两个已经封装好的产品(类)中同时包含一个名为wanda()的函数,为了能够准确调用其中一个wand ...

  9. range()函数的使用

    坚持每天学一点,每天进步一点,迟早有一点我会成为大神. 在python中range函数可以返回一系列连续增加的整数,也是一个迭代器. 函数用法:range(开始, 结束, 步进值): #步进值默认为1 ...

  10. CentOS7关闭防火墙方法

    在之前的版本中关闭防火墙等服务的命令是 service iptables stop /etc/init.d/iptables stop 在RHEL7中,其实没有这个服务 [root@rhel7 ~]# ...