HttpSession中isNew() 和 invalidate()的用法

  isNew()是指是否一个新创的session,当用户访问一个支持session的jsp网页时,session被创建,尽管有时session里面并没有任何东西。

  invalidate()是指清空session对象里的东西,并不指清除这个session对象本身。

  所以,要判断一个session里面是否存在自己想要的东西(这个session是否有效),是不能用isNew()的,应该用UserInfo userInfo=(UserInfo)session.getAttribute("USERINFO");if (userInfo!=null)之类的来判断。

表格的属性:height,cellpadding

  我是真正的菜鸟,现在才考虑把学习日记的页面表格问题,原来的表格在1024×768的模式行高会随表格内文字的多少而变成1行或2行,很难看。昨晚,在网上查了一下,学了一点 <td height="">和<table cellpadding="">的用法。这样,页面稍微好看了点。

  如下:

  <table border = "1" width="100%" cellpadding="3" align="center">

  <%! int colorSwitch = 1; %>

    <logic:iterate id="anGoal" name="goalList" type="com.learndiary.website.model.ArticleInfo">

     <% if (colorSwitch % 2 == 0) { Color="#FFFFFF"; }

        else { Color="#FFFFFF"; }

     %>   

     <tr bgcolor="<%= Color %>">

      <td width = "30%" height="33" align="center">

转贴:创建网页表格的基本原则和方法

把一个应用设置成http://localhost/就可运行的默

  昨天晚上,从一个学习日记里的朋友那里学到一点如上的知识:

  步骤:

  1、改8080端口为80端口中,80端口是系统的默认WEB端口吧?

  2、把应用的配置文件中的path="/learndiary" 改为 path="",把系统原来的ROOT应用的 path改了或删除这个应用。

  3、这里访问admin应用可以用:http://localhost/admin,访问manager应用可以用:http://localhost/manager/html

  4、上面的知识我只是从这位朋友那里知道了怎么用,并不知道原因。以后再了解。

(转帖)默认安装的mysql服务不安全因素涉及的内容

转自:http://blog.iyi.cn/start/2004/12/mysql_1.html

默认安装的mysql服务不安全因素涉及的内容

默认安装的mysql服务不安全因素涉及的内容有:

一.mysql默认的授权表

二.缺乏日志能力

三.my.ini文件泄露口令

四.服务默认被绑定全部的网络接口上

五.默认安装路径下的mysql目录权限

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

一.mysql默认的授权表

由于mysql对身份验证是基于mysql这个数据库的,也叫授权表。所有的权限设置都在这里了。

我们只讨论最为重要的一个表 user表。它控制的是接受或拒绝连接。

先看一下

select host,user,password,Delete_priv from user;

+-----------+------+------------------+-------------+

| host | user | password | Delete_priv |

+-----------+------+------------------+-------------+

| localhost | root | 67457e226a1a15bd | Y |

| % | root | | Y |

| localhost | | | Y |

| % | | | N |

+-----------+------+------------------+-------------+

现在新的版本,安装完毕都会出现一个快速设置窗口,用于设置口令。

以上,就是user表里的内容(略了点)看看有什么问题?

我们知道mysql的验证方式是比较特殊的,它基于两个2个信息来进行的

1.从那里连接

2.用户名

第一条没什么问题,当然口令必须是安全的。

第二条从任何主机,以用户root,不需要口令都可以连接,权限为所有的权限。(注:这里的权限是全局权限)

第三条从本地主机,任何用户名(注:user为空白,不表示不需要用户名),不需要口令,都可以连接,所有的权限

第四条从任何主机,任何用户名,不需要口令,都可以连接,无任何权限。

可以看出,2\\3\\4都是不安全的,如何攻击这里就不说了,请参看资料文库。

如果你mysql只允许本地连接,删除host的%和user中的nul(表示空)

delete from user where host=‘%‘;

delete from host where user=‘‘;

最后的user表,看起来因该是这个样子

+-----------+------+------------------+-------------+

| host | user | password | Delete_priv |

+-----------+------+------------------+-------------+

| localhost | root | 67457e226a1a15bd | Y |

+-----------+------+------------------+-------------+

最后需要刷新授权表,使其立刻生效

flush privileges;

如果你的mysql需要被远程使用,需要为%段中的root帐号,加上一个安全的密码

update user set password=password(‘youpass‘) where host=‘%‘;

其中youpass,就是口令

mysql> select host,user,password,Delete_priv from user;

+-----------+------+------------------+-------------+

| host | user | password | Delete_priv |

+-----------+------+------------------+-------------+

| localhost | root | 67457e226a1a15bd | Y |

| % | root | 77c590fa148bc9fb | Y |

+-----------+------+------------------+-------------+

更好的做法是,对远程主机的连接,指定为特定的

修改host中的%为允许连接的主机,比如:

192.168.0.% 允许一个特定的子网

www.sandflee.net 允许一个特定的主机

帐号默认的名字也是担心的问题。有可能导致被暴力破解

update user set user=‘localadmin‘ where host=‘localhost‘;

update user set user=‘remoteadmin‘ where host=‘%‘;

最后的user表看起来像是这个样子

mysql> select host,user,password,Delete_priv from user;

+-----------+-------------+------------------+-------------+

| host | user | password | Delete_priv |

+-----------+-------------+------------------+-------------+

| localhost | localadmin | 67457e226a1a15bd | Y |

| % | remoteadmin | 77c590fa148bc9fb | Y |

+-----------+-------------+------------------+-------------+

更为详细的资料,请去参考晏子的《MySQL中文参考手册》。随便那都有下

二.缺乏日志能力

mysql安装完成以后,会在%SystemRoot%目录下产生my.ini的设置文件

默认的内容如下:

——————————————————————————————

basedir=C:/mysql

#bind-address=192.168.0.1

datadir=C:/mysql/data

#language=C:/mysql/share/your language directory

#slow query log#=

#tmpdir#=

#port=3306

#set-variable=key_buffer=16M

[WinMySQLadmin]

Server=C:/mysql/bin/mysqld-nt.exe

user=root

password=root

注意log#=这个

它没有被定义,且被注销掉了。

更改为一个适合的路径,比如:

log=c:/mysql/logs/mysql.log

三.my.ini文件泄露口令

我们看到my.ini最后,有这两句

user=root

password=root

如果,你安装完成时,使用了mysql所提供的快速设置功能,(较新的版本)你的帐号和口令将被写到my.ini文件中。

这也是mysql写到启动组里的winmysqladmin.exe工具,运行时需要读取的。它提供的mysql服务

的一些监视功能。这样winmysqladmin.exe才能获得mysql服务的状态信息。

其实,这个也不算漏洞,我们看看my.ini默认的权限,它可以被user组用户读取。

从而导致口令被泄露

解决方法:

从新设定my.ini文件的权限.

从新设定帐号及口令

不使用快速设置

四.服务默认被绑定全部的网络接口上

服务被绑定到了所有的网络接口上,比如,你只需要一个运行在内网的mysql服务,但是你的机器有

外网的接口,mysql也会被绑定上,从而带来一些不必要的麻烦和威胁。

在my.ini里的这句

#bind-address=192.168.0.1

它默认被注销掉了

应该打开它

如果,只是本地使用,更改为

bind-address=127.0.0.1

如果是其它情况,应该选者一个合适的网络接口

五.默认安装路径下的mysql目录权限

mysql默认的安装路径为c:\\mysql,基本上都难得改,要改的话也是麻烦,还要去改my.ini。

但,这样就有个问题

通常c:\\的权限是everyone组-所有的权限。这是默认的,由于继承性,导致mysql下的data目录

也是everyone组-所有的权限。导致被随意访问、读取、删除,可能泄露和破坏数据。

更改mysql目录到一个合适,安全的访问权限。

over...

今天修复了导航系统的一些BUG

  像页面中找不到应该由ACTION提供的参数、删除日记出错、编辑、提交、填写查询操作中操作非法后,回到原页面提示错误会丢掉request中的参数(解决方法:在session中再保存一次重复的参数,但不知有没有更好的办法?)等问题。

  提交到CVS库,并把最新的程序上传空间试运行。

  现在空间的程序最大的改变就是拆分了那个失败的LearnDiaryDB.java。不知道对空间速度的提高有没有用。还有,我考虑把导航字符串等字符串作为一个参数传给页面是不是不好,是否应该只把特征参数传入页面,再由页面处理得到整个字符串。这样,可以加大页面布局的灵活性。以后,到了程序界面制作的时候,这肯定是个问题要碰到的。

  作为一个程序业余爱好者,真希望能够得到专业人士的指点。