一月
29

Web应用安全关注点

Author Dominic    Category 网站管理     Tags ,

当我们将一台服务器部署到互联网时,就难免被攻击,这些攻击包括针对服务器本身的攻击、针对Web服务的攻击、针对Web应用的攻击。而一般Web应用是最薄弱的环节,所以当一个访问者取得Web应用的认证之后,我们还需要跟踪其操作及状态,最好记录所存在安全问题的活动。一般Web应用中安全关注点可以包括以下内容:

  • Session的初始化和创建
  • 登录成功和失败
  • 退出
  • 使用无效密码尝试登录
  • 创建、读取、修改、删除用户帐号
  • 更改配置
  • 启动和关闭服务器
  • 异常系统事件
  • 尝试执行未授权功能
  • 更改密码
  • 授权操作
  • 处理事务
  • 使用GET方法代替POST方法

一般要分析被攻击情况,我们需要知道记录上述活动有关的一些数据:

  • 谁执行了这个操作
  • 操作请求从什么地方发起
  • 什么地方可能发生问题
  • 引用页是什么
  • 事件发生的日期和时间
一月
22

WF中顺序工作流本地通讯事件触发及调用步骤

Author Dominic    Category dotNet     Tags , ,

Windows Workflow Foundation ()中顺序工作流是非常常用的一种工作流,而在工作流运行过程中通常会和宿主程序之间交换数据,用于从外部环境获取数据,同时将工作流的状态告诉外部环境。

工作流中用来达到此目的的activity有:WebServiceInput、WebServiceOutput、InvokeWebService、CallExternalMethod、HandleExternalEvent。前三个用于和WebServices交换数据,后两个用于本地的通讯。CallExternalMethod activity允许工作流来调用宿主中注册的程序,而HandleExternalEvent activity是让工作流通过宿主来监听对应的事件。

使用CallExternalMethod、HandleExternalEvent一般需要根据以下步骤:(以下借用《Programming Windows Workflow Foundation》中代码)

1、定义接口事件和相关的参数类型。

用ExternalDataExchange标签定义接口和事件。用Serializable标签定义参数类型。

    [ExternalDataExchange]
    public interface IBugFlowService
    {
        event EventHandler<BugAddedArgs> BugAdded;
        void AssignBug(Bug bug);
    }
    [Serializable]
    public class BugAddedArgs : ExternalDataEventArgs
    {
        private Bug _bug;

        public BugAddedArgs(Guid instanceId, Bug newBug):base(instanceId)
        {
            _bug = newBug;
        }

        public Bug NewBug
        {
            get
            {
                return _bug;
            }
            set
            {
                _bug = value;
            }
        }
    }


2、定义传送的对象

这一步也可以放在之前或其他文件中,但对象必须打上Serializable标签。

    [Serializable]
    public class Bug
    {
        private string _description;
        private int _id;
        private string _title;

        public Bug(int id, string title, string description)
        {
            _id=id;
            _title = title;
            _description = description;
        }

        public string Descrition
        {
            get { return _description; }
            set { _description = value;}
        }

        public int ID
        {
            get { return _id; }
            set { _id = value;}
        }

        public string Title
        {
            get {  return _title;}
            set{_title = value;}
        }
    }

3、实现约定的接口

实现第一步中约定的服务接口

    public class BugFlowService : IBugFlowService
    {
        public event EventHandler<BugAddedArgs> BugAdded;

        public void AssignBug(Bug bug)
        {
            Console.WriteLine("Assign '{0}' to developer", bug.Title);
        }

        public void CreateBug(Guid instanceID, Bug bug)
        {
            BugAddedArgs arg = new BugAddedArgs(instanceID, bug);
            EventHandler<BugAddedArgs> ev = this.BugAdded;
            if (ev != null)
            {
                ev(null, arg);
            }
        }
    }

4、设计工作流及参数

新建一个顺序工作流,并依次从ToolsBox中拖放HandleExternalEvent activity、CallExternalMethod activity。分别命名NewBug、AssignBug。

设置命名为NewBug的HandleExternalEvent activity的InterfaceType属性为IBugFlowService,指定EventName属性为BugAdded,设置e参数来代表传入的事件参数,点击右侧的省略号按钮来绑定(或创建并绑定)参数到公开域或属性(例如:_newBug)。

设置命名为AssignBug的CallExternalMethod activity的InterfaceType属性为IBugFlowService,指定MethodName属性为AssignBug,AssignBug需要一个参数bug,点击bug参数右侧的省略号按钮来绑定(或创建并绑定)参数到公开域或属性(例如:_bugToAssign),为MethodInvoking事件生成事件处理方法AssignBug_MethodInvoking。

        public Bug _bugToAssign;
        public BugAddedArgs _newBug;

        private void AssignBug_MethodInvoking(object sender, EventArgs e)
        {

            _bugToAssign = _newBug.NewBug;

        }

5、在宿主中执行工作流

修改宿主启动工作流地方相关代码:

    ExternalDataExchangeService dataService;
    dataService = new ExternalDataExchangeService();
    workflowRuntime.AddService(dataService);
    BugFlowService bugFlow = new BugFlowService();
    dataService.AddService(bugFlow);

    WorkflowInstance instance = workflowRuntime.CreateWorkflow(                                   typeof(wf_test1.chapter3_sequential));
    instance.Start();

    Bug bug = new Bug(1, "Bug Title", "Bug Description");
    bugFlow.CreateBug(instance.InstanceId, bug);

 

注意事项说明:

1、接口必须打上ExternalDataExchange标签,才能使用工作流的数据交换服务[DataExchangeService]。

2、事件中参数类型必须继承自ExternalDataEventArgs类,参数类型必须打上Serializable标签。

3、事件句柄建议使用EventHandler<T>的方式,否则可能收到“The event BugAdded has to be of type EventHandler where T derives from ExternalDataEventArgs”的错误提示。

4、需要引用System.Workflow.Activities命名空间。

一月
8

一个快速申请免费QQ号码的方法

Author Dominic    Category 软件应用     Tags ,

腾讯网站上申请一个免费的QQ号码还是比较麻烦的,但腾讯给国外的用户提供了一个很便捷的申请页面:http://signup.qq.com

现在我们可以用这个页面很快申请到一个以8开头的免费9位QQ号码,这个方式好像每个IP每天只能申请一个。而且这个页面上填写表单的位置还会变化呢。

只需要选择位置、语言、填入昵称和年龄加上验证码就可以申请到一个QQ号,一口气申请了10个,挑中一个858531AAB的号码。

十二月
27

[Hack]Xoops中article模块分类显示页面同时显示子分类文章的方法

Author Dominic    Category XOOPS     Tags , ,

D.J.老大的article模组确实好用,但是在分类文章列表显示页面view.category.php这个文件中却只显示给定栏目ID的文章和子分类列表及子分类文章数。虽然个人比较喜欢这种方式,但这种方式并不适合目前国内流行文章管理系统在显示栏目的文章方式,一般的网站在现实栏目时需要将分类的子分类文章也同时显示出来。

针对目前大多数都是采用两级分类的方式,我对view.category.php做了一些Hack:

1、在view.category.php 97行附近修改如下:

$counts_category =& $category_handler->getCategoryCounts(array_keys($categories), "access");
    //Add By XuYong 获取子栏目下给定篇数文章

    $articles_perpage = (empty($start) && empty($list)) ? $xoopsModuleConfig["articles_category"] : $xoopsModuleConfig["articles_perpage"];
    //End Add

foreach( $categories as $id=>$cat){
    //Add By XuYong 获取子栏目下给定篇数文章
    $subcriteria = new CriteriaCompo(new Criteria("ac.ac_publish", 0, ">"));
    $subarticle_id =& $article_handler->getIdsByCategory($cat, $articles_perpage, 0, $subcriteria);
    if(count($subarticle_id)>0){
        $criteria = new Criteria("art_id", "(".implode(",",$subarticle_id).")", "IN");
        $tags = array("uid", "writer_id", "art_title", "art_summary", "art_image", "art_pages", "art_categories", "art_time_publish", "art_counter", "art_comments", "art_trackbacks");
        $subarticles_obj =& $article_handler->getAll($criteria, $tags);
    }else{
        $subarticles_obj = array();
    }

    $subcatarticles = array();
    foreach ($subarticle_id as $id) {
        $_article = array(
            "id"        => $id,
            "title"        => $subarticles_obj[$id]->getVar("art_title"),
            "time"        => $subarticles_obj[$id]->getTime($xoopsModuleConfig["timeformat"]),
            "image"        => $subarticles_obj[$id]->getImage(),
            "counter"    => $subarticles_obj[$id]->getVar("art_counter"),
            "comments"    => $subarticles_obj[$id]->getVar("art_comments"),
            "trackbacks"=> $subarticles_obj[$id]->getVar("art_trackbacks")
            );
        if(!empty($xoopsModuleConfig["display_summary"])){
            $_article["summary"] = $subarticles_obj[$id]->getSummary(true);
        }
        $subcatarticles[$id] = $_article;
        unset($_article);
    }

    //End Add
    $subcategories[] = array(
        "id"            => $cat->getVar("cat_id"),
        "title"            => $cat->getVar("cat_title"),
        "articles"        => @intval($counts_article[$cat->getVar("cat_id")]),
        "categories"    => @intval($counts_category[$cat->getVar("cat_id")]),
        "subcatart"  => $subcatarticles
        );
        //Add By XuYong 获取子栏目下给定篇数文章
        unset($subcatarticles);
        //End Add
}
unset($criteria);
$criteria = new CriteriaCompo(new Criteria("ac.ac_feature", 0, ">"));
$criteria->setSort("ac.ac_feature");

2、修改模板文件article_category.html文件,134行附近修改如下:

<{if count($categories) gt 0}>
<div id="category" class="article-category">

    <{foreachq item=cat name=cat from=$categories}>
    <div class="category-header tdbg4" stype="width:80%">
<span class="sizscolor"><b><a href="<{$_url}>/modules/<{$_dirname}>/view.category.php<{$smarty.const.URL_DELIMITER}>c<{$cat.id}>/list"><{$cat.title}></a></b></span>
    </div>

        <{if count($cat.subcatart) gt 0}>
        <div id="article_<{$cat.id}>" class="article-article">
                    <table width="95%" border="0" align="center" cellspacing="0">
                        <{foreachq item=article from=$cat.subcatart}>
                      <tr class="tdlist">
                        <td  width="86%" height="24" class="tdlist">·<a href="<{$xoops_url}>/modules/<{$xoops_dirname}>/view.article.php<{$smarty.const.URL_DELIMITER}><{$article.id}>"><{$article.title}></a>
                                        <{if $article.image}><img src="<{$xoops_url}>/modules/<{$xoops_dirname}>/images/image.gif" width="12px" alt="" /><{/if}>
                        </td>
                        <td width="14%" height="2" class="tdlist"><{$article.time|date_format:"%y-%d-%m"}></td>
                      </tr>
                      <{/foreach}>
                                </table>
        </div>
        <{/if}>
            <div class="article-section-title">
            <span class="subject"> </span>
            <span class="navigation"><a href="<{$xoops_url}>/modules/<{$xoops_dirname}>/view.category.php<{$smarty.const.URL_DELIMITER}>c<{$cat.id}>/list"><{$smarty.const._MORE}></a>
            </span>
            </div>
            <div class="clear"></div>
    <{/foreach}>

</div>
<{/if}>

其中有些样式和一些修改是根据当前需要改的,需要根据自身情况调整。

效果demo;

view_category_hack_demo

 

Hack后的iview.category.php和模板文件下载:

十二月
26

Xoops中weblinks模组1.13版简体中文UTF8字符集乱码解决及语言包

Author Dominic    Category XOOPS     Tags , ,

今天xoops.org.cn上有人说道weblinksV1.13版本在用UTF8字符集的时候碰到乱码和RSS、ATOM输出乱码的问题,发现手上的一个小东西也存在这样的问题,虽然weblinks模组现在http://ohwada.net推出了1.82.1版本的weblinks模组,但需要装他们的happy_linux模组,而且目前还没有一个简体中文语言包,也就不想升级到新的weblinks模组了。在培训的间隙,花了点时间分析了以下问题,然来是从简体中文gb2312字符集语言包转换成UTF8语言包时候,虽然可以使用了,但是缺少了关键的UTF8转换处理函数(UTF8是不需要再转换的),导致本身就是utf8的字符串被二次编码,就导致乱码了。

解决办法是在weblinks_language_convert.php文件中加入utf8转换函数。需要清除cache目录中对应的缓存文件。

 

//Add By Xuyong
// 字符集不需要转化
//End Add
function convert_from_utf8($text)
{
    return ($text);
}
function convert_to_utf8($text)
{
    return ($text);
}

完整utf8语言包:

十二月
25

合肥市商务领航第二届我最喜爱的网站评选结果

Author Dominic    Category 生活叫吠     Tags ,

政府类网站:http://220.178.124.17/piaoxuan/new_morept.jsp?type=0
市国税局 总票数:101417 短信票数:20;声讯票数:11470;网络票数:89927
合肥旅游门户网 总票数:80753 短信票数:0;声讯票数:200;网络票数:80553
合肥劳动保障网 总票数:63871 短信票数:8095;声讯票数:3935;网络票数:51841
合肥市档案信息网 总票数:57649短信票数:0;声讯票数:0;网络票数:57649
合肥市容-合肥城管 总票数:29340 短信票数:0;声讯票数:0;网络票数:29340
合肥警务网 总票数:16157 短信票数:40;声讯票数:100;网络票数:16017
合肥市公证处 总票数:5278 短信票数:45;声讯票数:2595;网络票数:2638
合肥台办网 总票数:4936 短信票数:5;声讯票数:1425;网络票数:3506
肥东县人民政府网 总票数:4695 短信票数:545;声讯票数:630;网络票数:3520

商业类网站:http://220.178.124.17/piaoxuan/new_morept.jsp?type=1
合肥吃吧 总票数:51548 短信票数:0;声讯票数:0;网络票数:51588
我爱设计网 总票数:44499 短信票数:0;声讯票数:0;网络票数:44499
安徽车市 总票数:41090 短信票数:0;声讯票数:0;网络票数:41090
飞跃社区 总票数:37289 短信票数:0;声讯票数:0;网络票数:37289
安徽驾培网 总票数:30432 短信票数:0;声讯票数:0;网络票数:30432
合肥团购网 总票数:29124 短信票数:0;声讯票数:0;网络票数:29124

企业类网站:http://220.178.124.17/piaoxuan/new_morept.jsp?type=2
合肥二手网 总票数:31317 短信票数:0;声讯票数:0;网络票数:31317
安徽国际会展中心 总票数:8737 短信票数:0;声讯票数:0;网络票数:8737
合肥火车站 总票数:483 短信票数:0;声讯票数:0;网络票数:483
大宇科技 总票数:187 短信票数:0;声讯票数:0;网络票数:187

投票网站:http://220.178.124.17/piaoxuan/px.htm

投票规则:两轮网友投票(网上投票和168声讯投票、短信投票)筛选出三大类网站中的前10名进入第三轮专家评选。

投票计数规则:网友投票每IP每日每类限一票,一条有效短信投票或168投票相当于5条网友投票。

感概:国税太有钱,2294次声讯电话,费时费力,可怜纳税人的钱。投票技术手段和无耻手段、金钱都是需要的,手段还要注意不要太过分。合肥二手网太悲惨,怎么混到企业类了,难道是某个物资回收公司弄的?

2007年安徽IT界一场闹剧!

十二月
17

秀一把公司网络速度

Author Dominic    Category 工作, 生活叫吠     Tags

拷贝迅雷的:
文件名称:       VISUAL STUDIO2008 Team Suite RTM英文版.iso
文件大小:       3.83GB
文件类型:       WinRAR 档案文件
位置:           E:\
URL:            ftp://202.113.13.170:1021/pub/Windows/Development/DevelopTools/VISUAL STUDIO/2008 Team Suite RTM 英文版/Microsoft.Visual.Studio.Team.System.2008.Team.Suite-ZWTiSO.iso
引用页:         http://www.twt.edu.cn/software/download.php?id=5869
任务创建时间:   2007-12-3 8:28:18
任务完成时间:   2007-12-3 8:41:28
下载用时:       00:12:56
平均速度:       5.05MB/s
注释:           VISUAL STUDIO2008 Team Suite RTM英文版
任务说明:       未从原始地址获得数据

竟然比局域网拷贝还快,一兄弟拷贝我的下载,只有1MB/s左右的速度。

文件名称:       eclipse-jee-europa-fall2-win32.zip
文件大小:       126.01MB
文件类型:       WinRAR ZIP 档案文件
位置:           G:\TDDOWNLOAD\music\
URL:            http://download.actuatechina.com/eclipse/technology/epp/downloads/release/20071103/eclipse-jee-europa-fall2-win32.zip
引用页:        
任务创建时间:   2007-11-8 11:25:36
任务完成时间:   2007-11-8 11:26:26
下载用时:       00:00:46
平均速度:      2.74MB/s
注释:          

十二月
14

期待Windows Server 2008

CNBeta获得了翻译过的ServerWatch公布了Windows Server 2008的十大亮点功能文章(Windows Server 2008 十大亮点),很是期待Windows Server 2008的发布,希望部署到52design能够解决asp程序频繁被攻击的状况。

这十大亮点是:

1. 虚拟化
       尽管在Server 2008正式发布之前不会出现虚拟化,但微软Hyper-V的虚拟化技术绝对是一个亮点,大型企业中已经有75%应用了虚拟化技术,用户利用虚拟化技术可以在完全不影响工作的前提下一切就像所有应用程序运行在自己电脑上一样,明显节省成本和提高安全性。

Dominic:这个还不知道我们怎么利用呢。

2. Server Core
       Server Core是Server 2008的最小版本,不包含GUI,提高了稳定性但提供DHCP、DNS等基础网络服务,相比完整版本的系统,这一版本明显减少了维护和管理的时间.。

Dominic:这个最好了,本来服务器上面要GUI干什么哦,在管理的时候用GUI就可以了,不用GUI系统本身占用的资源会少一些。

3. IIS
       IIS 7 是2008中的大规模改进之一,它提供了更高的安全特性,此外还有管理委派的功能大大节省了管理员的时间。

Dominic:网站管理者的福音。

4. 基于角色的Server Core安装
       Server Core是完全可定制的组件系统,你可以选择只安装需要的网络服务部分。

Dominic:是不是可以弄一个最小集合的服务器呀。

5. 只读的域控制器 (RODC)
      尽量减少出现问题的几率,RODC可以帮助活动目录数据库成为只读状态,提高了可靠性和安全性的同时还减少了流量消耗。

Dominic:目前用不上这个。

6. 增强的终端服务
      TS RemoteApp 允许用户访问中央应用程序,这看起来就跟运行在本地一样,TS Gateway加密了http会话通信,用户不再需要VPN以连接到Internet,本地打印也变得更简单。

Dominic:应该不再担心远程管理被监听了吧,PCAnyWhere离消失不远了。

7. 网络访问保护(NAP)
       运行防火墙,并且符合企业的安全策略。Windows Vista SP1、XP SP3都包含来自Server 2008的NAP,可见它的重要性。

Dominic:估计我手上的一个项目也要终止了。

8. Bitlocker
       基于硬件的磁盘加密技术,在Windows Vista中我们已经了解。

Dominic:这个在服务器中有什么作用呀?加密IIS配置?加密数据库连接配置文件?。

9. Windows PowerShell
       全新的管理方式,基于.net技术的命令行模式,管理员们可以通过简单的方法完全控制Server 2008,不需要GUI。

Dominic:又要多学一样东西。

10. 更高的安全性
      Windows Server 2008的安全性不仅仅体现在一个方面,安全已经形成了一个整体,几乎系统的每一块都考虑到了安全机制,在使用它的时候您可以感受到。例如:Address Space Load Randomization ,让缓冲区溢出攻击变得非常困难。

Dominic:作为Web服务更安全就行了,最看重这块,希望是像Win2k到Win2003那样的飞跃。

十二月
10

终于去了趟长城

Author Dominic    Category 生活叫吠     Tags

作为甲方到VRV去考察他们的内网安全系统在公安部和国税总局的应用情况,事情办完之后时间上比较宽裕,又逢周六就和同事一起去了趟长城。

从读书到工作这么多年,去北京也不下十次,还是第一次去长城,那天是相当的冷,我给冻得直流鼻涕水,但内衣却都汗湿了,真是“不到长城非好汉,到了长城一身汗”。

1124_110744_2

十二月
8

hibernate.cfg.xml位置及JDBC配置

项目需要构建一个Java环境,使用Hibernate作为数据持久层,一兄弟按照网上的说法配置了hibernate,结果搞了几天都没搞好,总是报错“Could not find datasource”,最后还是我自己动手在自己机器上配个环境才引导他弄好。

要配好Hibernate首先的弄清楚Java在寻找hibernate.cfg.xml这个文件的时候在哪些目录中寻找,Java将在以下目录中寻找hibernate.cfg.xml这个文件:
webappsname/WEB-INF/classes/
TOMCATHOME/
TOMCATHOME/lib

所以我们的hibernate.cfg.xml务必放在webapp的WEB-INF/classes/目录下了,放在其他目录下都不是很合适。

另外就是关于hibernate.cfg.xml中的jdbc配置了,网上的说法各异,其实最简单的就是在hibernate.cfg.xml中直接使用jdbc配置了,如下:
<?xml version=”1.0″  encoding=”utf-8″?>
<!DOCTYPE -configuration PUBLIC “-///Hibernate Configuration DTD 3.0//EN” “http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd”>
<hibernate-configuration>
    <session-factory>
        <property name=”hibernate.connection.driver_class”>com.mysql.jdbc.Driver</property>
        <property name=”hibernate.connection.url”>jdbc:mysql://localhost/test</property>
        <property name=”hibernate.connection.username”>root</property>
        <property name=”hibernate.connection.password” />
        <property name=”show_sql”>false</property>
        <property name=”dialect”>org.hibernate.dialect.MySQLDialect</property>
        <mapping resource=”hb/Cat.hbm.xml” />
    </session-factory>
</hibernate-configuration>

更改其中的driverclass和connection.url、username、password和dialect,再添加一些mapping就可以了,需要注意的是property节点的name属性中最好在前面加上hibernate。有些文章说使用Tomcat的JNDI,不建议这么做。同时要注意的是在hibernate.cfg.xml不要同时使用datasource和连接字符串两种配置(那个兄弟非要使用两种配置结果来不成功),因为没有必要。

其实从部署的角度来看的话,就应该是这样的,首先在生产环境下,很多时候是没有办法拿到Tomcat的管理权限的是配不了JNDI的,而且要去配JNDI无形增加的部署的难度,在hibernate.cfg.xml中配置连接字符串就很方便部署(Hibernate要是像.net中那样支持连接字符串加密就好了)。hibernate.cfg.xml存放的位置也是一样的,放在WEB-INF/classes/目录下,部署的时候只要拷贝webapp整个目录就可以完成部署了。

网上的文章用来做参考最好,很多东西还得靠自己领会,特别是碰到问题的时候,尽心书不如无书嘛(也别太相信我写的,说不定那天不管用了。^_^)。

附:使用Tomcat JNDI 数据源配置方法
<?xml version=”1.0″  encoding=”utf-8″ ?>
<!DOCTYPE hibernate-configuration PUBLIC “-//Hibernate/Hibernate Configuration DTD 3.0//EN” “http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd”>
<hibernate-configuration>
    <session-factory>
        <property name=”hibernate.connection.datasource”>java:comp/env/jdbc/odbcq</property>
        <property name=”show_sql”>false</property>
        <property name=”dialect”>org.hibernate.dialect.MySQLDialect</property>
        <mapping resource=”hb/Cat.hbm.xml” />
    </session-factory>
</hibernate-configuration>

专题推荐

标签

分类目录

新浪微博

存档

近期文章

近期评论

友情链接

分享按钮