自言自语

I'm Wang Xianyuan, writing for myself, more studying, more experience…

耍宝版面扩展

By

看到耍宝右侧栏了吗?这是耍宝最新扩展的面板。通过它您可以看到我们精选的趣味文章和好玩的宝贝。

在耍宝有一支淘客小分队,他们的职责是搜罗各种新鲜有趣的宝贝。将这些宝贝推荐给朋友们,给大家向朋友们耍宝的机会。耍宝淘客都淘了些什么好玩意?请看右边侧栏。宝贝正在征集、发掘各种新鲜有趣的宝贝,如果您发现了好玩的宝贝请火速联系我们

还是来看一下耍宝扩展后的新版面。

shuabao-sidepanelext

迎新的同时不能忘了辞旧,缅怀一下耍宝之前的版面吧。Read More →

Posted in Stories | Tagged: | Comments Off on 耍宝版面扩展

两个自动处理博易文章别名的插件

By

博易文章的别名(又叫 Slug 或 Cname)是访问博易文章时用的地址中的一部分。博易文章的别名是可以手工指定的,在写文章时如果不指定博易文章的别名博易会自动根据文章标题进行编码处理。而这个编码规则是这样的:文章标题的英文字符不做转换,非英文字符将被UrlEncode编码处理。这样一来,1个中文字符会被编码成6个字符。也就是说如果写文章用中文标题,又没有手工指定别名的话,自动生成的别名会很长。

长别名会影响到搜索引擎的收录,甚至会影响到用户访问。搜索引擎对网页地址的抓取是有长度限制的,如果网址超出了这一长度,搜索引擎即会放弃抓取。为了解决写文章没有手工指定别名而导致别名过长的问题,这周抽时间做了两个自动处理博易文章别名的插件,可以自动生成短别名。

这两个插件生成短别名的算法不一样,原理是一样的,用户可以各取所需。

1.自动生成MD5格式的别名 AutoMd5Slug.zip (813.00 bytes)

2.将中文翻译为英文作为别名 GoogleSlugTransliterator.zip (1.08 kb)

其中第2个插件翻译引擎是基于 Google 翻译 OpenAPI 实现的。如果您对这两个插件的使用有任何问题或者有好的建议,可以联系我

OWASP TOP 10

By

Open Web Application Security Project (开放式Web应用程序安全项目,缩写为OWASP)总结出了现有Web应用程序在安全方面常见的十大漏洞,以提醒企业及其程序开发人员尽量避免它们给企业IT系统带来的安全风险:

非法输入 Unvalidated Input
在数据被输入程序前忽略对数据合法性的检验是一个常见的编程漏洞。随着OWASP对Web应用程序脆弱性的调查,非法输入的问题已成为大多数Web应用程序安全漏洞方面的一个普遍现象。

失效的访问控制 Broken Access Control
大部分企业都非常关注对已经建立的连接进行控制,但是,允许一个特定的字符串输入可以让攻击行为绕过企业的控制。

失效的账户和线程管理 Broken Authentication and Session Management
有良好的访问控制并不意味着万事大吉,企业还应该保护用户的密码、会话令牌、账户列表及其它任何可为攻击者提供有利信息、能帮助他们攻击企业网络的内容。

跨站点脚本攻击 Cross Site Scripting Flaws
这是一种常见的攻击,当攻击脚本被嵌入企业的Web页面或其它可以访问的Web资源中,没有保护能力的台式机访问这个页面或资源时,脚本就会被启动,这种攻击可以影响企业内成百上千员工的终端电脑。

缓存溢出问题 Buffer Overflows
这个问题一般出现在用较早的编程语言、如C语言编写的程序中,这种编程错误其实也是由于没有很好地确定输入内容在内存中的位置所致。

注入式攻击 Injection Flaws
如果没有成功地阻止带有语法含义的输入内容,有可能导致对数据库信息的非法访问,在Web表单中输入的内容应该保持简单,并且不应包含可被执行的代码。

异常错误处理 Improper Error Handling
当错误发生时,向用户提交错误提示是很正常的事情,但是如果提交的错误提示中包含了太多的内容,就有可能会被攻击者分析出网络环境的结构或配置。

不安全的存储 Insecure Storage
对于Web应用程序来说,妥善保存密码、用户名及其他与身份验证有关的信息是非常重要的工作,对这些信息进行加密则是非常有效的方式,但是一些企业会采用那些未经实践验证的加密解决方案,其中就可能存在安全漏洞。

程序拒绝服务攻击 Application Denial of Service
与拒绝服务攻击 (DoS)类似,应用程序的DoS攻击会利用大量非法用户抢占应用程序资源,导致合法用户无法使用该Web应用程序。

不安全的配置管理 Insecure Configuration Management
有效的配置管理过程可以为Web应用程序和企业的网络架构提供良好的保护。

这篇文章是转载的,有空把自己总结的一些安全编码规范发上来。

技术很酸

By

自从2004年那阵,我技术入门的地方VBDAK论坛关闭之后,我就再也没正二八经地参与过任何一个技术社区或博客圈子。不知道什么时候听说了博客园这么个好东西,也完全没有兴趣去看。直到最近订阅了好一阵博客园的Feed,才发现,还是不去博客园的好。

现在的技术社区和博客圈子大牛比较集中,条件可比5年前年那阵强不知多少倍。可是,讨论氛围却变得很酸。分享一篇自己精心写好的文章无非为了获得圈子里朋友的认同,在5年前,获得来自其他技术爱好者的认同和赞誉或善意的建议是比较容易的,只要你的文章中有几句在理,有几段给人以启发,哪怕整篇文章是译过来甚至Copy过来;而今,就连自己呕心沥血、原创首发的文章发布前也要遭到被喷的准备。好多文章开篇或结尾都必有“在下愚钝,且时间仓促,若有不当之处,请多包涵”更有“欢迎来喷”之类的话,给人感觉现在的技术人员觉悟高了不少,不仅谦虚谨慎而且能够为了分享自己的心得忍受各种形式的攻击和辱骂。真不容易。

为什么会这样?为什么会有那么多人找不到自己欣赏的文章,找不到自己感激的文章,找不到让自己敬佩的作者,找不到能够折服自己的思想?每每看完文章就以为不专业,缺乏价值,就想喷两下。我想可能是好文章太多了,看多了好文章让技术的审美情趣、对文章的挑剔能力提高了吧。就好象看多了各朝代精美的老古董看多了,再看几件现代的残次品或者赝品,就忍不住想喷,或为了证实自己曾经饱览天下的好文章,自以资深评委姿态自居读那些文字。其中也有好些人碰到和自己实力相当的同志,非但没有相互学习,反而给对方的文章挑刺起来。这是什么?这是酸。

在下愚钝,至今,在下的博客园、CSDN等技术社区帐号还没敢给这些社区的建设添过砖加过瓦,生怕我这块砖没砌好惹来牛人们的拍砖。

博易随机文章小部件

By

耍宝的文章丰富了,为了平均新旧文章的阅读次数,发挥沉淀的经典旧文的价值,在朋友的启发下,准备开发一个随机文章推介的小部件。这个部件的功能是在所有文章中随机选取一定数量的文章显示在部件区域(WidgetZone),显示文章的数量可以自行设定。演示效果见 www.shuabao.net

在 widgets 目录建立 RandomPosts 目录,并创建 widget.ascx 和 edit.ascx 用户控件,其中 edit.ascx 用于设定显示文章的数量。下面给出 widget.ascx.cs 里面的关键程序段以实现随机选取一定数量的文章并显示。

[code:c#]

public override void LoadWidget()
{
	StringDictionary settings = GetSettings();
	int numberOfPosts = DEFAULT_NUMBER_OF_POSTS;
	if (settings.ContainsKey("numberofposts"))
		numberOfPosts = int.Parse(settings["numberofposts"]);

	if (HttpRuntime.Cache["widget_randomposts"] == null)
	{
		List visiblePosts = Post.Posts.FindAll(delegate(Post p)
		{
			return p.IsVisibleToPublic;//仅显示对游客可见文章
		});

		int max = Math.Min(visiblePosts.Count, numberOfPosts);
		List list = new List();

		for (int i = max; i > 0; i--)
		{
			Random random = new Random();
			int r = random.Next(0, visiblePosts.Count);//生成随机数

			list.Add(visiblePosts[r]);
			visiblePosts.RemoveAt(r);
		}

		HttpRuntime.Cache.Insert("widget_randomposts", list, null, 
		DateTime.Now.AddMinutes(15), TimeSpan.Zero);//缓存文章列表,每15分钟更新
	}

	string content = RenderPosts((List)HttpRuntime.Cache["widget_randomposts"], settings);

	LiteralControl html = new LiteralControl(content);
	phPosts.Controls.Add(html);
}

private string RenderPosts(List posts, StringDictionary settings)
{
	if (posts.Count == 0)
	{
		return "" + Resources.labels.none + "";
	}

	StringBuilder sb = new StringBuilder();
	sb.Append("");

	foreach (Post post in posts)
	{
		if (!post.IsVisible)
			continue;

		sb.AppendFormat(link, post.RelativeLink, HttpUtility.HtmlEncode(post.Title));
	}

	sb.Append("");
	return sb.ToString();
}

[/code]

试用源码:RandomPosts.rar (2.97 kb) 如有问题请联系我

这周,有点累

By

Fuck the GFW!

莫非每次写日志都要我以这句耳熟能详的话开头么?今天工信部某副部长挂了,草根站长界叫好声一片——死有余辜,大快人心。当官当到这份上,真没什么好说的了。前两天我的博客和博易官方频频Down掉,又有用户向我反映他的博客出了同样的问题,回收进程就能恢复一阵,不久又Down掉。已经有经验了,一定是GFW把某某站给封了,连带作用所致。GFW简直就是人为破坏互联网秩序,也难怪,互联网国内这一块是他们家开的。不仅墙外的twitter被封,就连墙内的饭否也被迫关长大吉。饭否,C2C了一把,火了一阵,还没看到或来得及实施赢利模式就关张了,我似乎看到一个巨婴被残忍地扼杀在摇篮中。

到上海快一周了,算是稍微安定了些,这两天完成了博易v1.8.5并低调发布(连3个官方群里面公告都没发)。悄悄地发布,悄悄地更新了自言自语耍宝的程序……低调!低调!为什么要低调?因为博易博客官方网站的域名(blogyi.net)到现在为止,备案申请还没有审批下来。搞不好给上面查封了,那,一个优秀的博客系统就要从此从祖国的这篇热土上消失了……为了生存,需要低调,任何困难都难不倒英雄的中国人民

本来把几个未备案的网站都迁移到朋友的VPS上,经观察,发现全部迁过去之后对服务器造成了巨大压力,时常需要以iisreset配合运行。想想,不能连累朋友,就把耍宝给迁移出来。耍宝的程序也更新到博易v1.8.5了,支持Feed输出选择全文或摘要。原来的Feed是全文输出,那样只要订阅耍宝就能在阅读器里头查看所有内容,对网站的互动和流量有一定影响。从现在开始,耍宝的Feed仅输出文章摘要,对内容有较强好奇心的同志们要看全文还得劳您访问网站。折腾手上的几个博客已经快要把我累到了,疲于解决建站资源方面的问题,谁能为我创造点条件,别再让我受这累了,我会感激死他(她)的。

最后,最近Google的Chrome OS消息比较多,莫非这就是李开复博士所说的打开浏览器就能看到云?Chrome的界面是非常成功的,用户体验非常棒,很短时间就上手,并让我爱不释手。而Chrome OS的界面同Chrome,这足以说明Google也对这种界面设计胸有成竹。我也迫不及待地想体验一把Chrome OS。

昨天买了两盆草忘了问店老板这两盆草叫什么名字了,真是晕死!Fuck the GFW!