Category: Programming Language

浅谈ASP.net中使用WebServices的安全性保证 0

浅谈ASP.net中使用WebServices的安全性保证

在开发一些在线业务的时候,对于一些客户端程序,我们需要将数据存储在网络上,即使用传统的C/S结构。随着WebServices的出现,我们可以用很低的成本在成熟的网络上架构这种结构,不必单独去购买数据中心服务器了。 实现的方法主要是:购建一个支持asp.net 2.0以上版本的虚拟服务器,然后在上面部署WebServices环境,通过调用asmx的方法对后台的数据库(MySQL、MS-SQL、Access等)进行数据库访问。而在客户端方面,我们就可以使用窗体了而不是Browser。通过调用后台的Services完成数据的交换。 数据交换容易,搭建WebServices也不是一件难事。但是难点在于,我们如何在这种基于HTTP下(没有SSL和证书)、透明的WebServices下,来保证Services的安全性?现在世面上的虚拟主机空间都不支持https。如何快速开发一个小DataServices呢?当然,我们第一步的考虑肯定是在每一个Service里面加上两个额外的参数:用户名和密码。这个可行,但是复杂度增加不少;后来我也考虑过使用Session来做。但是这种方法,只能适合在浏览器上的测试;而对于实际的客户端程序来讲,无疑没有什么作用。 通过学习,我掌握了一种在SOAP头中增加身份信息描述的方法;在客户端,只需要保存一个相关的身份验证对象,每次调用Services的时候就可以不必去考虑身份的问题了。Stub端会将身份信息绑定到SOAP Hea­d中。 每次访问服务器,便会触发一个HttpModule来对身份进行验证。在Services体中,我们只需要判断是否已经通过身份验证即可。 首先我们要构造这个HttpModule。这是一个继承了IHttpModule接口的类,用来截获来自客户端的XML文件,并对其SOAP Head进行解析,找出我们需要的用户名和密码的信息,并交由WebServiceAuthenticationEventHandler所触发的事件来去判断身份。 using System; using System.Web; using System.IO; using System.Xml; using System.Xml.XPath; using System.Text; using System.Web.Services.Protocols;   name­spa­ce Jing­Zhi­We­bServi­ce { public sea­led cla­ss WebServi­ceAu­then­ti­ca­tion­Mo­du­le : IHttpMo­du­le {…

1

小程序

用了近三个晚上开发了一个小程序——“精致三面翻”售出存档表,主要帮助我爸的公司进行数据整理。用到了ASP.net 2.0的技术。 虽然程序很小,但是相信对于父亲的公司还是挺有帮助的。开发过程中有一些小体会和经验: 程序并不是代码越优美越好。对于一些小程序,快速开发,省略一些无关紧要的问题显得非常重要。对于软件工程科班出身的我,编码时命名很难不想到匈牙利命名法。。如果我们把时间都花在校正变量上,那么无异于浪费。我的策略:将主要用到的TextBox/DateTimePicker等一些类的对象加以合理命名,其它的则随系统的自身命名好了。另外数据库选用了Access,表名、字段名全部中文。。加上.net 2.0的DataSet,开发非常快捷。。时间多半花在了画界面上。。 如果程序中出现几个大块相同的地方,建议把他们做成UserControl加以调用。省时省力。 如果你使用的是Access数据库,在进行参数传递的时候,变量名不要是SqlServer中的“select * from table whe­re username=@username”,而应该是:“select * from table whe­re username=?”。问号足矣。这点也花了我一定的时间。 对于.net的数据库,配置文件对它的路径描述是:|DataDirectory|。那么我们怎么找到这个文件夹呢?答案是:Application.LocalUserAppDataPath。这个有的时候很重要。。比如在我的备份功能那块。。 利用.net fra­mwo­rk 2.0发送mail的代码不用找了,我提供一个能用于gmail的,放在下面了。 Icon­Wo­r­ksho­p软件做出来的i­con很好看! That’s it. ^_^ public void SMTP(string from, string to, string bcc, string…

Python Challenge Level 4 0

Python Challenge Level 4

Entry: http://www.pythonchallenge.com/pc/def/linkedlist.php 此题开始变态起来了,用到了linkedlist.php.… 思路: 点击中间的大图片,发现给了一个参数nothing,现在是12345。并告之下一个数是92512。把nothing的值替换为92512,则得到了下一个值为64505。周而复始。 这道题就是要我们用Python实现递推地找到下一个数的值,直到最后出现答案。手工做就会疯掉的。。。 需要使用Python的u­r­lli­b库了。。 还有一个问题就是如何去匹配得到的内容中的数字。观察发现每一页的内容是这样的: and the next nothing is xxxxx 也就是说是一个以数字结尾的正则表达式。我们可以用$符号匹配结尾,用\d匹配数字,用+匹配至少一个字符。这样pattern就是:(\d+)$ 另外到后来很变态。。网页中间突然断掉了,然后给出让把得到的结果除以二继续。。 加起来以后执行了208次,崩溃啊~这要是手动查找…… 源代码: from urllib impo­rt urlo­pen impo­rt re   next=‘12345’ next=‘46059’ #the 198th times   for n in…

Python Challenge Level 3 1

Python Challenge Level 3

Entry: http://www.pythonchallenge.com/pc/def/equality.html Requi­re­ment: One sma­ll letter, sur­roun­ded by EXACTLY three big body­gua­r­ds on each of its sides. 思路: 要求是找出加在三个大写字母中间的一个小写字母。这个小写字母左右两个方向都有三个大写字母。一看就知道应该用正则表达式解决,那么这个正则表达式怎么写呢? 有且仅有一个小写字母:[a-z] 有且仅有三个大写字母:[A-Z]{3} 那么这个­Re­gu­lar Expression的Pattern就是:[A-Z]{3}[a-z][A-Z]{3} ……………… 不对。。在此我犯了一个小错误。上述表达式不能考虑到这种情况:ABCDaABCD。即三个大写字母再外侧是什么,也需要考虑进去。它们不应该是大写字母了。 所以还应该加上非大写字母的Pattern:[^A-Z] So.… Pattern: [^A-Z][A-Z]{3}[a-z][A-Z]{3}[^A-Z] 源代码: con­tent=”’.…..”’   impo­rt re…

Python Challenge Level 2 0

Python Challenge Level 2

http://www.pythonchallenge.com/pc/def/ocr.html 查看页面源代码后,发现了一堆乱码。。有一句话很重要:find rare cha­ra­cters in the mess below。题目是要我们在这堆乱码中找出仅有的几个字符。。 string模块里有个isalpha函数,来确定一个字符是否是字母。这次派上用场了。 源代码: con­tent=”’.…..”’   impo­rt string result=[c for c in con­tent if c.isalpha()] print string.join(result,”)con­tent=”’.…..”’ impo­rt string result=[c for c in con­tent if c.isalpha()] print string.join(result,”)…

初学者的差距 [Python Challenge Level 1] 0

初学者的差距 [Python Challenge Level 1]

学习Python的时候,挑战Python Cha­llen­ge。http://www.pythonchallenge.com/pc/def/map.html 我的源代码是这样的: content=”’g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amkn­sr­cpq ypc dmp. bmg­le gr gl zw fylb gq glcdd­ga­g­clr ylb rfyr’q ufw rfgq rcvr gq qm jmle. sqg­le qrpgle.kyicrpylq() gq…

Cool Stack 1.3 0

Cool Stack 1.3

该文章转自朋友陶震的博客,转载过来学习。 源地址:http://maoa.cn/jerry/html/2008/07/200807291553467065.htm Cool Sta­ck 是一个在 Sola­ris 系统中 Apa­che, MySQL, PHP 等集合的简易安装包。 在 1.3 版本中升级了以下组件: Apa­che 2.2.9 ruby 1.8.6p230 mysql 5.1.25 apc 3.0.19 项目地址:http://cooltools.sunsource.net/coolstack/ 下载地址:https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_SMI-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=CoolStack-1.3Fin-G-F@CDS-CDS_SMI 附:前一版本 Cool Sta­ck 1.2 (Apa­che 2.2.6, MySQL 5.0.45, PHP 5.2.4) …