[JavaScript]如何防止自己的网站被别人以 iframe 盖台嵌入 (与反制办法)

“iframe (内置框架)”是用来在网页中的特定位置嵌入另一个网页。目前 Facebook、Google+、Twitter...等用来在网页上显示社群内容的社群元件,几乎都是以 iframe 实作出来的。

原本框架是一种很好的应用,但如果是自己辛苦制作的网页被别人的网站以 iframe 嵌入,因而出现在别人的网站里,成为别人网站的一部份!!这种感觉就像是自己的心血被别人整碗捧走一样!!

导回自已网站的方法

方法 1

于网页的原始码加入以下 Script:

<script type="text/javascript">
if( top.location != document.location ){
	top.location.href = document.location.href;
}
</script>

以上的 Script 会检查浏览器最上层视窗的网址是否与目前网页的网址一致,如果不一致,则把最上层视窗的网址改为目前网页的网址,就酱。

方法 2 (反制办法)

于网页的原始码加入以下 Script:

<script type="text/javascript">
if( top.location != document.location ){
	document.write("<h1 style='color:#FF0000'>未经授权嵌入别人的网页是可耻的行为!!</h1>(<a href='"+document.location+"' target='_blank'>原站网址</a>)");
}
</script>

以上的 Script 会检查浏览器最上层视窗的网址是否与目前网页的网址一致,如果不一致,就显示:

未经授权嵌入别人的网页是可耻的行为!!
(原站网址)

我比较不喜欢与人家互呛,所以我通常是用“方法 1”啦!

[MySQL]数据库的备份与还原

数据库汇出/备份

1. 备份单一数据库:

$ mysqldump -u Username -p --opt DatabaseName > Backup.sql

2. 仅备份特定数据库下的资料表:

$ mysqldump -u Username -p --opt DatabaseName Table1 Table2... > Backup.sql

3. 仅汇出资料表结构:

$ mysqldump -u Username -p --opt --no-data DatabaseName > Backup.sql

4. 备份全部的数据库:

$ mysqldump -u Username -p -A --opt > AllBackup.sql

mysql/mysqldump/mysqladmin 与“登入”有关的参数说明:

  • -u Username: 用来存取 mysql 资料表的用户名称。此参数可省略,若省略,则表示为目前登入 linux 的用户名称。
  • -p: 于执行时再询问密码。
  • -pPassword: 用来存取 mysql 资料表的密码,-p 与 Password 的中间不可有空格。

数据库汇入/还原

1. 建立数据库,再从备份档汇入单一数据库:

$ mysqladmin -u Username -p create DatabaseName
$ mysql -u Username -p DatabaseName < Backup.sql

2. 从备份档汇入全部的数据库 (不需先建立数据库):

$ mysql -u Username -p < AllBackup.sql

状况处理:

状况 1.

汇入数据库时出现错误讯息: Unknown collation: 'utf8mb4_unicode_ci' Unknown collation: 'utf8mb4_unicode_520_ci'

说明:

MySQL 于 v5.5.3 版之后才有“utf8mb4”的编码格式。原本 utf8 的最大编码长度为 3bytes,而 utf8mb4 的最大编码长度为 4bytes,因此它比 utf8 可以储存更多的字符。但是以常用的文字来讲,utf8 已经完全足够使用了。若不升级 MySQL Server,则只须将汇入的字符编码格式改为原本的 utf8。

解决方法:

先将备份档中的 utf8mb4 字串替换成 utf8: (以下的三行指令需依照顺序执行)

$ sed -i 's/utf8mb4_unicode_ci/utf8_general_ci/g' Backup.sql
$ sed -i 's/utf8mb4_unicode_520_ci/utf8_general_ci/g' Backup.sql
$ sed -i 's/utf8mb4/utf8/g' Backup.sql

全部替换完再进行汇入:

$ mysql -u Username -p DatabaseName < Backup.sql

状况 2.

以 mysqldump 汇出数据库时出现错误讯息: Got error: 1044: Access denied for user 'backup'@'localhost' to database 'test' when using LOCK TABLES

说明:

这错误讯息已说明了用来执行 mysqldump 的帐号没有“LOCK TABLES”权限! 通常用 root 帐号汇出数据库不会发生这个问题,因为我们会给 root 所有的权限。然而我们在设定其它帐号时可能会忘了给它设定“LOCK TABLES”权限,而执行 mysqldump 至少需要“SELECT”与“LOCK TABLES”权限才行,最好再加上“SHOW VIEW”、“EVENT”与“TRIGGER”。

解决方法:

重新授予用户权限:

grant SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER on *.* to 'backup'@'localhost' identified by '{Password}';
flush privileges;

状况 3.

从 cpanel 下载的 MySQL 档案格式为 *.gz,可以用 gunzip 解压缩:

$ gunzip Backup.sql.gz

注意: 使用 gunzip 解压缩后,原本的 *.gz 会被删除!!若要保留旧档,须改用下列指令:

 $ gunzip -c Backup.sql.gz > Backup.sql

数据库离线备份/还原

MySQL 的数据库放在 /var/lib/mysql 下,以数据库的名称做为目录的名称。直接将 /var/lib/mysql 下的数据库目录用 tar 指令个别压缩起来即可做为备份。要还原再把档案解压缩回去。

要以这种方式执行备份与还原都必须先停止 MySQL 的服务:

$ service mysqld stop

参考网页

处理 DNS 的 CNAME 造成收件者错误的问题

第一次遇到客户因为自己 Server 的 DNS 问题,造成我方要寄信给客户时,收件者的 EMail Address 会于 SMTP Server 端被自动变更 (寄给 [email protected] 会变成寄给 [email protected]),以致于客户收不到 EMail 的问题!! (客户可能以为是我方的问题)

我自己测试的结果是与 DNS 的 CNAME 有关:

C:\>nslookup -type=cname example.com
  Server:  dns.hinet.net
  Address: 168.95.1.1
  example.com canonical name = other.example.com

同时我在网络上找到一篇微软的 KB 文件,已经写得很清楚了,我就直接把内容放上来。

Read more

免跑银行,直接线上领取 Google AdSense 广告收入 (西联汇款)

2020/12/30 更新:

Google 通知,将于 2021 年初停止透过西联汇款支付款项,所以本网页的教学大概也没什么用了。
如要继续收到 Google 支付的款项,你必须登入自己的帐户,然后新增或选取其他收款方式 (汇款或支票)。

之前的内容:

Google AdSense

约莫等了半年,终于又收到了一笔 Google AdSense 的广告收入了,算是农历过年前的一个小小小红包。

在台湾,AdSense 的用户可以使用“西联汇款”来进行收款,目前台湾有支援西联汇款的银行有京城银行大众银行元大银行

我是使用“京城银行”,这个有点陌生的银行。它的“网络西联汇款”服务可以直接将我的 AdSense 广告收益从美金转为台币存入我的银行帐户,并且不收取任何手续费、不用等待,但是会有汇损的问题

不过我今天要操作收款时,发现做为“汇款人”的 Google 的身份又改变了! 原本的身份“Google Ireland Ltd. (爱尔兰)”,更早之前是“Google Inc. (美国)”,现在的汇款人身份则为“Google Asia Pacific Pte. Ltd. (新加坡)”!

这个付款人的资讯会影响我们能否正常收款,不过没关系,下面会教你如何识别付款者的身份。

Read more

[JavaScript]简易网页下拉选单,可支援 MouseOver 与 Click 事件

在网页界已经有很多的“下拉选单”程式了,不过似乎都搞得太过复杂或太华丽了。

其实下拉选单的原理很简单,一开始只是先让“子选单”隐藏,当鼠标移至“主选单”时再让子选单显示。因此,只要能控制网页元件的 display 样式属性就已经成功一半了。

因为本人喜欢重新发明轮子,所以也写了一个简易的网页下拉选单的程式,可以做为初学者入门的参考。

在范例的原始码中,我尽量让程式码看起来浅显易懂,并且只用 JavaScript,不使用 jQuery 或其它 Framework。我也尽量多写一些注解,希望 JavaScript 的初学者能看得懂。

Read more

[jQuery]中文的 jQuery 教学资源

如果想学 jQuery 的话,可以从下列的教学资源开始,读者应具有 HTML、JavaScript、CSS 的基础。

网站

上官林杰 - ericsk (2007)

  1. jQuery 学习心得笔记 (1) – 前言
  2. jQuery 学习心得笔记 (2) – 怎么使用 jQuery 来写 JavaScript
  3. jQuery 学习心得笔记 (3) – jQuery 的事件(Event)处理
  4. jQuery 学习心得笔记 (4) – Ajax (上)
  5. jQuery 学习心得笔记 (5) – Ajax (下)
  6. jQuery 学习笔记 (6) - 操作 DOM 物件
  7. jQuery 学习笔记 (7) - 扩充 jQuery

以上这几篇是我的 jQuery 启蒙文章。
Read more

修复 Linux 开机出现档案系统有不一致性 (UNEXPECTED INCONSISTENCY) 的错误问题

Linux 无法正常开机,出现错误讯息:

Checking filesystems

/dev/sda1: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
         (i.e., without -a or -p options)
                                                  [FAILED]

*** An error occurred during the file system check.
*** Dropping you to a shell; the system will reboot
*** when you leave the shell.
Give root password for maintenance
(or type Control-D to continue):

错误讯息指出 /dev/sda1 分割区有不一致性的问题!!

Read more

[转载]你们华人根本不爱家,你们只爱金钱

转载自: 网络邮件


我们总以为自己是世界上最有家庭观念、最讲究亲情的种族之一,并且深深地为之自豪,但在老外的眼中却未必如此。

有一位澳洲的朋友谈起了华人和澳洲人对家庭的重视。

没想到,那几位澳洲朋友说: “你别生气,其实我们觉得你们华人并不爱家,并不像你们自己说的这么注重家庭。你们更爱金钱!”

我愕然,于是我记下了这些真诚的对话...

无论在澳洲还是在华人国家,你们华人的确很勤奋,华人在海外也能比当地人积蓄更多的钱财,但我不认为这是你们华人有经商的天赋,而是你们比我们更节俭,更能省,是通过降低生活标准来完成的金钱积累。你们平时很少上酒吧,周末也很少度假,甚至周末或假期都不休息。衣服都是从自己国家买了带过去,因为自己国家这边更便宜,我甚至看到有学生带了很多碗过去。

你们会没日没夜的工作,把孩子都交给老人照管,除了关心孩子的学习成绩外,你们忙得很少和孩子一起玩。圣诞节你们甚至都不休息。

所以,你们华人的孩子尽管学业上很优秀,但他们总是觉得自己很另类,觉得和当地人比起来,父母更关心的是家庭的金钱收入、关心的是他们的学习分数,而不是他们的快乐。

Read more

勒索病毒 (RansomWare) - 一种全新的商业模式

勒索病毒 (RansomWare)

近两年来出现一种新型态的电脑病毒:“勒索病毒”。(关键字: RansomWare、Crypt0L0ocker、CryptoLocker、CryptWall)

这种病毒会将受害人电脑里的文件类型的档案加密 (包含连结到 NAS 的档案),而受害人必须交付赎款才能取得解密程式。

由于病毒是使用很高阶的加密技术,受害人即使能删除病毒也救不回被加密的档案。防毒软件顶多能移除病毒,但仍无法解密档案! 因此只能选择交付赎款或放弃所有档案。

而台湾的受害人甚至必须到“全家便利商店”购买 BitCoin 来付赎款,就算请店员打 165 也没用!

唯有异地的档案备份才能解除危机。

这种“勒索病毒”严然成为了一种新的“商业模式”,并且已经做出了口碑,未来只会衍生出更多的变种病毒。

Read more

谈电脑防毒、网络安全与帐户安全

本文是综合我的经验,以及身为一个 MIS 的血泪所交织出来的资安重点,写的不算专业,但还是希望对于看到的人能有一点帮助。

防毒观念

  1. 病毒也是一种“软件”,必须有人去执行。散播病毒的人会设法引诱你去执行它。
  2. 防毒软件只能防“已知病毒”,新的病毒必需在有人中毒并且回报病毒样本之后才能研发出病毒码。直到防毒软件能全面防止新病毒通常是病毒已经肆虐了好几天之后的事情了。
  3. 写病毒的人如果觉得有利可图,病毒会更新的比防毒软件还勤快!!
  4. 个人的安全意识比防毒软件更为重要,人的因素,永远是资安最大的漏洞。

Read more

return top