上个网真不容易啊

昨天发现新大陆一样研究了一下google的apps服务(http://www.google.com/a),有点类似微软的domains服务,但是功能更丰富。如果你有自己的域名,就可以在google apps上建立属于你的个人空间。google apps的好处就在于整合了google旗下的多个服务,包括强大的gmail,docs在线文件编辑,calendar日程同步,gtalk以及个人主页。这样,你就可以利用google提供的免费资源建立属于自己域名的各项服务。
赶紧把原本指向windows live domains的邮件服务取消,改用gmail的服务,并把DNS解析服务商中的各条记录一一改正,并按照google apps上的提示建立CNAME记录,比如新建CNAME记录www.xfelix.com/mail.xfelix.com等都指向ghs.google.com。这样就可以使用我自己的好记的域名来访问google apps上的一些长域名站点的服务了。白天好不容易简单的编辑出了一个webpage,也算是自己的个人首页了。测试一切通过,各项功能都正常。可是让妹妹试试访问我的域名,让别的朋友访问,都说无法打开。这下真让我觉得奇怪,判断估计是DNS记录更新不同步的原因,估计再等一天就会好的,但是我总觉得他们无法访问有可能是GFW造成的。
于是回家就试着访问我自己的域名,长时间无法打开,然后就被reset了,典型的被GFW阻挡的迹象。用爬墙工具试试,一切正常。再分析分析DNS的解析,发现不查不要紧,一查还真发现许多奇妙的问题。发现我白天建立的CNAME记录的域名全部解析到218.83.175.154或者218.83.175.155.这是什么地址啊!可是直接ping我的域名却又可以解析成正确的目的地址,但是无法ping通。再一想,原来218.83.175.154,155就是著名的中国电信互联星空114号码百事通地址啊,DNS劫持!就是这么无耻!所有的nslookup域名解析都被电信在当中插一脚,碰到无法正常解析的就往这个地址丢,出现电信的广告页面。
被中国电信劫持一下也就算了,谁叫上网服务是他们提供的,忍着吧。但是再google一下,才发现,原来ghs.google.com的所有ip以及alias都被伟大的GFW被屏蔽掉了。这就是为什么我辛辛苦苦做的这些设置在国内访问都无效了。真想不明白政府到底怕什么,这么一个正常的站点都不让我们访问。幸好google提供的这些服务的原始域名还是可以访问的,国家不让我用CNAME,我就用url转发吧。有效率高的不让用,就只能退而求其次咯。
在国内上网真的不容易,还得整天乞求GFW别管的那么宽,还得盼各类国际会议,国际活动多在国内开开,这样GFW就能网开一面。

互联网时代特别要注意个人隐私保护

陈冠希事件轰动整个华人圈,人们在欣赏曾经自己偶像的私密照同时,又在那里惊叹互联网的强大。都或多或少的担心自己的隐私会不会也同样被通过互联网曝光。互联网的传播速度和力量真的是无法预计的。但作为普通人,我们不会像名星那样收到关注。话虽如此,普通人同样有隐私需要保护。
俗话说,好事不出门,坏事传千里。大家行的正,做的端又何怕人家来曝你的隐私呢。古话又说,若要人不知,除非己莫为。陈冠希爽都爽了,还要拍这些东西下来,这又能怪谁。我们普通人可不会有如此隐私嗜好需要保护吧。
在互联网上,搜索引擎输入你自己的名字,往往会有你意想不到的结果。个人的证件号码啦,手机号码啦,什么时候说的话写的文章,以及一些隐私内容就这样呈现在你面前了。你不免会问,他们是怎么会知道的。
其实这些信息不是人家偷了去的,而是你自己不知不觉泄露出去的。
闲话少说,希望大家都能够保护好自己的隐私,做到以下几点,可以最大限度的防止个人隐私泄露在互联网上。
1.不在互联网上存放个人隐私照片及隐私文件,如需存放请使用强密码加密保护
2.不轻易向非政府组织提供个人的社会身份信息,诸如身份证号,社保号,公积金号等
3.不在互联网上使用真实姓名,注册论坛等请使用无明显身份识别信息的免费邮箱
4.不为蝇头小利而去缺乏隐私保护申明的网站填写个人信息表格参加所谓的抽奖
5.少在论坛、blog,同学录等处过多的泄露个人的信息
6.不同的网站、论坛、邮箱,请按照重要程度和信任程度使用不同的用户名密码组合
其他的隐私保护需要存有你个人信息的这些机构组织的保护和支持。比如像某些不守信用的招聘网站卖你的个人简历,或者有些金融机构把你的个人信息卖给保险公司,那我们普通人也是无能为力的,这需要全社会以及司法部门的介入和加强。
愿大家在新的一年,上网安全!

打造完全免费的个人电脑安全防线

不可否认,绝大多数的电脑使用者在使用各类侵权的软件,在个人安全防护方面使用盗版的情况更加严重。有些是通过共用注册号,有些是通过破解的方式非法使用一些防毒软件和个人防火墙,但是此类情况被软件厂商发觉后往往会ban掉此类注册码,或者升级主程序来避免破解;还有些用户这是使用企业版防毒软件对产品授权的控管不严,而侵权使用此类软件。收费的这些安全产品自然有他们的过人之处,有卖点才会有人掏钱去购买此类软件,才会有人趋之若鹜的去搞盗版。但是我们完全可以避免使用盗版软件的风险,而正大光明的使用免费的安全防护产品,这些免费的午餐中也不乏精品。
首先是要极力推荐的防毒软件AntiVir(http://www.free-av.com),德国的防毒软件,个人版是免费的,病毒库非常强大,更新速度很快,基本上每天会更新2/3次,界面很友好,它的logo是一把小红伞,这个防毒软件出众的地方在于它的识别率、解壳的能力和最快速度的病毒码更新,这很大程度保证了使用此防毒软件的用户可以免受最新病毒的攻击。
另一个免费的就是Comodo(http://www.comodo.com)个人防火墙,原来我也是一直用zonealarm的,但是最近看了一个防止内部程序leak的测评报告,comodo可是排名第一的。刚试用了一天,感觉还不错。
这下,我的个人电脑安全防线可就是全部由免费软件筑就的了,谁说免费的没有收费的强呢!

又有两个漏洞,微软要忙死了

刚刚紧急处理好VML漏洞的事情,紧接着又报出两个漏洞。

一个是关于activeX的漏洞,另一个是office powerpoint的漏洞。都是缓冲区溢出的漏洞,可以被drop恶意代码的。

第一个漏洞的攻击代码已经公开,很快攻击、病毒就会随之而来。

第二个漏洞则是先发现攻击行为才意识到PPT存在的这个漏洞的。

都比较重要,又要等微软出补丁了,估计微软又要在10月10日前提前出补丁了。

第一个activex的漏洞,没有补丁也可以暂时防一防,只要禁用activex就行了。但是第二个PPT的漏洞就麻烦了,PPT作为办公常用文档,天天碰到,难保哪天就误点了就中招了,而且受影响的office是所有版本,包括苹果机上的office版本,这几天升级个人防毒软件勤一点吧,经常看看windows出没出补丁。大家好运。

最新MSN蠕虫通过微软pif过滤漏洞进行传播

最近有两种MSN蠕虫,通过发送一串网址链接

 

不同的网址链接到不同变种的trojan木马或者广告程序。不仅如此通过IM传播的蠕虫病毒也被同时下载,然后就自动运行并向msn联系人发送同样的这些链接信息。

似乎和以前的msn传播的病毒没多少两样,但是这次却很有意思。

你可以注意到链接文件的后缀名是".PIF",但是你们也许还会记得微软已经阻止了含有".pif"的msn信息。

这是怎么回事呢?哈哈哈,原来微软的阻止规则是区分大小写的!

这样,类似的"Pif""pIf"都可以通过微软的过滤。因此大家要格外引起重视哦,千万别小看了这个漏洞哦。因为前连天说的那个VML的漏洞还没有官方的补丁发布哦。难说哪个制作病毒的人就利用这两个漏洞联合出击了。

在中国私自拥有邮件服务器很有可能会坐牢

中国最近出台了一个新的法规,私自拥有没有登记过的邮件服务器将是犯罪行为,期望来解决垃圾邮件的问题。企业和ISP必须在邮件服务器搭建后的20天内通知政府相关部门,并且必须强制保留所有邮件至少60天以上。这个法规同时认定通过邮件讨论信息安全(Information Security)将和讨论其他已经被明令禁止的敏感信息一样,一并视为违法行为。

多和谐啊。原本是出于反垃圾邮件目的的法规,现在却如此收场。中国正利用它的法律在互联网上加紧自己的势力范围,简单而又直接。既然是这样,为什么还要假借反垃圾邮件的名义呢?不就是让政府肆意侵犯公民隐私权所谓的合法化嘛,随便看任何他们想看的邮件嘛。我是蛮奇怪的,为什么他们只要求邮件只存档60天呢?为什么不存个一年半载呢?也许这是下一步的计划吧。

Translated from http://www.computerworld.com/blogs/node/3522

新发现IE浏览器VML缓冲器溢出漏洞及临时应对办法

又是一个利用浏览器的漏洞远程执行代码,不过这次可能被感染的途径只可能是通过浏览恶意网站和查看html格式的邮件。
微软关于这个漏洞昨天发布了安全建议http://www.microsoft.com/technet/security/advisory/925568.mspx
针对性的补丁计划在10月10日发布。微软每个月都要这么来一次
等到10月10日微软放出security update的时候,也许利用这个漏洞的页面已经出现了,攻击也会随之而来,面对这种0day攻击的防护真空期,我们得想点临时的解决办法。
可以通过注销明确存在漏洞的VML相关dll,来躲避这个存在的风险。
在开始-运行

regsvr32 /u "%CommonProgramFiles%Microsoft SharedVGXvgx.dll"

注销vgx.dll就行了。
VGX是主要处理VML(Vector Markup Language)的,具体VML是干什么的,我不是很懂,但大致是处理页面中的矢量图形的。互联网大多数的网站页面没有用到VML,所以注销这个插件也不是很大的影响,而且VML是微软的IE独有的,firefox和opera则支持SVG(Scala ble Vector Graphics )
可以通过IE访问http://webfx.eae.net/dhtml/VMLClock/clockScriptlet.html来看看VML的一个sample。若是没注销vgx.dll的话应该看到一个时钟,注销了则应当啥都看不见。
微软的OE邮件客户端也同样存在这样的风险,但是好在email中显示的html默认的被归为限制站点,二进制和脚本行为都是禁用的。但是你通过IE浏览器去看webmail中的邮件同样存在风险哦。
所以强烈建议,赶快按上面说的注销这个动态链接库文件吧。
翻译并添油加醋自http://www.f-secure.com/weblog/archives/archive-092006.html#00000974

Mcafee不错的站点建议SiteAdvisor功能

Mcafee的http://www.siteadvisor.com/ 站点,一个不错的功能。它提供了站点的分析和安全查询功能,这样大家在网上冲浪的时候,发现一些可疑站点,不能确定其是否安全,就可以到Mcafee的这个站点上进行查询寻求帮助。如果该站点没有被Mcafee分析过,也可以请求Mcafee对该站点的安全性进行评估。

这样有什么好处呢?大家都知道,现在的网上钓鱼越来越多,特别是网上银行的钓鱼事件层出不穷,对于经验不足的个人,很难判断你访问的站点是不是真实的银行支付门户。同样的,有些恶意的网站,不仅穿插了很多的广告,还放置了很多木马程序在上面,利用访问者IE浏览器的漏洞进行病毒释放,然后再窃取这些主机上的敏感信息。

对于“钓鱼”,目前公认比较好的解决办法也只有使用浏览器工具条。同样的Mcafee该站点也提供SiteAdvisor的IE工具条下载,在用户浏览网站的时候,实时提醒用户该站点的安全性和真实性。

大家可以试试查询电信的“互联星空”站点在Mcafee的SiteAdvisor上的评估结果。http://www.siteadvisor.com/sites/vnet.cn

When we tested this site we found links to chinavnet.com, which we found to be a distributor of downloads some people consider adware, spyware or other unwanted programs.

没有想到吧,意思就是互联星空的该站点分析后的结果是被认定为发布广告、间谍等恶意程序。

尽管电信一再辩解一再声明,但是我相信Mcafee的分析结果不会骗人,事实就是电信在强行分发广告、间谍程序。而且诱骗、强迫Adsl用户进行安装!更有甚者,电信还采用了HTTP劫持,重定向的技术,强行把未安装互联星空这个广告、间谍软件的用户的第一次互联网浏览重定向到vnet.cn页面,强迫用户进行安装。

幸好互联网的安全措施越来越多,网民的安全意识也有所提高,大家一定要加强上网的安全防范,一起抵制不良网站和恶意程序!

PHP and the OWASP十大安全漏洞

The Open Web Application Security Project released a helpful document that lists what they think are the top ten security vulnerabilities in web applications.

These vulnerabilities can, of course, exist in PHP applications. Here are some tips on how to avoid them. I’ve included related links and references where relevant.

1. Unvalidated Parameters

Most importantly, turn off register_globals. This configuration setting defaults to off in PHP 4.2.0 and later. Access values from URLs, forms, and cookies through the superglobal arrays $_GET, $_POST, and $_COOKIE.

Before you use values from the superglobal arrays, validate them to make sure they don’t contain unexpected input. If you know what type of value you are expecting, make sure what you’ve got conforms to an expected format. For example, if you’re expecting a US ZIP Code, make sure your value is either five digits or five digits, a hyphen, and four more digits (ZIP+4). Often, regular expressions are the easiest way to validate data:

if (preg_match('/^d{5}(-d{4})?$/',$_GET['zip'])) {
    $zip = $_GET['zip'];
} else {
    die('Invalid ZIP Code format.');
}
  

If you’re expecting to receive data in a cookie or a hidden form field that you’ve previously sent to a client, make sure it hasn’t been tampered with by sending a hash of the data and a secret word along with the data. Put the hash in a hidden form field (or in the cookie) along with the data. When you receive the data and the hash, re-hash the data and make sure the new hash matches the old one:

// sending the cookie
$secret_word = 'gargamel';
$id = 123745323;
$hash = md5($secret_word.$id);
setcookie('id',$id.'-'.$hash);

// receiving and verifying the cookie
list($cookie_id,$cookie_hash) = explode('-',$_COOKIE['id']);
if (md5($secret_word.$cookie_id) == $cookie_hash) {
    $id = $cookie_id;
} else {
    die('Invalid cookie.');
}

If a user has changed the ID value in the cookie, the hashes won’t match. The success of this method obviously depends on keeping $secret_word secret, so put it in a file that can’t be read by just anybody and change it periodically. (But remember, when you change it, old hashes that might be lying around in cookies will no longer be valid.)

See Also:

  • PHP Manual: Using Register Globals
  • PHP Cookbook: Recipe 9.7 ("Securing PHP’s Form Processing"), Recipe 14.3 ("Verifying Data with Hashes")

2. Broken Access Control

Instead of rolling your own access control solution, use PEAR modules. Auth does cookie-based authentication for you and Auth_HTTP does browser-based authentication.

See Also:

3. Broken Account and Session Management

Use PHP’s built-in session management functions for secure, standardized session management. However, be careful how your server is configured to store session information. For example, if session contents are stored as world-readable files in /tmp, then any user that logs into the server can see the contents of all the sessions. Store the sessions in a database or in a part of the file system that only trusted users can access.

To prevent network sniffers from scooping up session IDs, session-specific traffic should be sent over SSL. You don’t need to do anything special to PHP when you’re using an SSL connection, but you do need to specially configure your webserver.

See Also:

  • PHP Manual: Session handling functions
  • PHP Cookbook: Recipe 8.5 ("Using Session Tracking"), Recipe 8.6 ("Storing Sessions in a Database")

4. Cross-Site Scripting (XSS) Flaws

Never display any information coming from outside your program without filtering it first. Filter variables before including them in hidden form fields, in query strings, or just plain page output.

PHP gives you plenty of tools to filter untrusted data:

  • htmlspecialchars() turns & > " < into their HTML-entity equivalents and can also convert single quotes by passing ENT_QUOTES as a second argument.

  • strtr() filters any characters you’d like. Pass strtr() an array of characters and their replacements. To change ( and ) into their entity equivalents, which is recommended to prevent XSS attacks, do:
    $safer = strtr($untrusted, array('(' => '(', ')' => ')'));

  • strip_tags() removes HTML and PHP tags from a string.

  • utf8_decode() converts the ISO-8859-1 characters in a string encoded with the Unicode UTF-8 encoding to single-byte ASCII characters. Sometimes cross-site scripting attackers attempt to hide their attacks in Unicode encoding. You can use utf8_decode() to peel off that encoding.

See Also:

5. Buffer Overflows

You can’t allocate memory at runtime in PHP and their are no pointers like in C so your PHP code, however sloppy it may be, won’t have any buffer overflows. What you do have to watch out for, however, are buffer overflows in PHP itself (and its extensions.) Subscribe to the php-announce mailing list to keep abreast of patches and new releases.

See Also:

6. Command Injection Flaws

Cross-site scripting flaws happen when you display unfiltered, unescaped malicious content to a user’s browser. Command injection flaws happen when you pass unfiltered, unescaped malicious commands to an external process or database. To prevent command injection flaws, in addition to validating input, always escape user input before passing it to an external process or database.

If you’re passing user input to a shell (via a command like exec(), system(), or the backtick operator), first, ask yourself if you really need to. Most file operations can be performed with native PHP functions. If you absolutely, positively need to run an external program whose name or arguments come from untrusted input, escape program names with escapeshellcmd() and arguments with escapeshellarg().

Before executing an external program or opening an external file, you should also canonicalize its pathname with realpath(). This expands all symbolic links, translates . (current directory) .. (parent directory), and removes duplicate directory separators. Once a pathname is canonicalized you can test it to make sure it meets certain criteria, like being beneath the web server document root or in a user’s home directory.

If you’re passing user input to a SQL query, escape the input with addslashes() before putting it into the query. If you’re using MySQL, escape strings with mysql_real_escape_string() (or mysql_escape_string() for PHP versions before 4.3.0). If you’re using the PEAR DB database abstraction layer, you can use the DB::quote() method or use a query placeholder like ?, which automatically escapes the value that replaces the placeholder.

See Also:

7. Error Handling Problems

If users (and attackers) can see the raw error messages returned from PHP, your database, or external programs, they can make educated guesses about how your system is organized and what software you use. These educated guesses make it easier for attackers to break into your system. Error messages shouldn’t contain any descriptive system information. Tell PHP to put error messages in your server’s error log instead of displaying them to a user with these configuration directives:

log_errors = On
display_errors = Off

See Also:

8. Insecure Use of Cryptography

The mcrypt extension provides a standardized interface to many popular cryptographic algorithms. Use mcrypt instead of rolling your own encryption scheme. Also, be careful about where (if anywhere) you store encryption keys. The strongest algorithm in the world is pointless if an attacker can easily obtain a key for decryption. If you need to store keys at all, store them apart from encrypted data. Better yet, don’t store the keys and prompt users to enter them when something needs to be decrypted. (Of course, if you’re prompting a user over the web for sensitive information like an encryption key, that prompt and the user’s reply should be passed over SSL.)

See Also:

9. Remote Administration Flaws

When possible, run remote administration tools over an SSL connection to prevent sniffing of passwords and content. If you’ve installed third-party software that has a remote administration component, change the default administrative user names and passwords. Change the default administrative URL as well, if possible. Running administrative tools on a different web server than the public web server that the administrative tool administrates can be a good idea as well.

10. Web and Application Server Misconfiguration

Keep on top of PHP patches and security problems by subscribing to the php-announce mailing list. Stay away from the automatic PHP source display handler (AddType application/x-httpd-php-source .phps), since it lets attackers look at your code. Of the two sample php.ini files distributed with PHP ( php.ini-dist and php.ini-recommended), use php.ini-recommended as a base for your site configuration.

See Also:

操作系统使用空密码也ok拉

假设你的XP操作系统上有两个用户帐号:一个每天都使用的帐号,设置为限制用户(Limited User),另一个帐号设置在管理员组(Administrator Group),用作系统维护。你的电脑放在一个安全的地方,你是唯一可以物理上接触这台机器的人。下面两种选择,哪种更安全呢?

  • 你给管理员账户设置一个空密码;
  • 你为管理员账户设置了一个15位字符的强密码,使用随即生成的字符串,数字和符号。

你相不相信,空密码在很大程度上提供了更多的保护。因为在Windows XP操作系统中引入的加强安全机制,空密码的账户只能被用作直接登陆,要么在欢迎界面或者Windows的登陆对话框。你无法通过远程桌面登陆没有密码的账户,你也无法使用Run As功能来进入账户。想要入侵你机器的攻击者也无法通过网络获取管理员访问权限。

但是注意了,这个办法不是适合于每个人的。别在移动笔记本上使用这个办法(因为你的电脑一旦离开你,谁都可以看你里面的机密资料了),也别在加入Windows域的电脑上设置空密码,或者你真的需要远程桌面访问也别用这个办法。

但是这个机制对于家用电脑真的是非常好,特别是给老人和小孩用,再合适不过了,既简单又安全。

Original Post By Ed Bott