Archive for the ‘ Website ’ Category

.htaccess 简易的网页帐号认证

.htaccess 让你不用写程式,就可以用最简单的方式做出“网页登入”的功能,限制哪些用户能进到网页的某一层目录。

建立用户验证资料

建立用户验证档

建立用户验证档,并新增一组帐号及密码:

htpasswd -c /path/to/.htusers UserName1

这里所产生的 .htusers 是一个文字档,里面会有用户名称及编码过的密码。第一次建立档案时,必须加 -c 参数。同时,请找一个安全的地方放置 .htusers 这个档案,所谓的“安全”是指至少不要在公开网页可以被下载到的路径,例如放在 public_html 的上一层。

继续增加第二组帐号及密码到验证档时,就不用加 -c 参数:

htpasswd /path/to/.htusers UserName2

建立群组资料档

如果用户比较多,你可能会想要用群组的方式来做管理。群组资料档的目的是要将多个用户设为一个群组,请新增或编辑 /path/to/.htgroups,依需求增加类似如下的设定:

Group1:UserName1 UserName2

代表 Group1 包含 UserName1UserName2 这两个用户。

验证登入

在欲执行用户验证的网页目录下,建立一个 .htaccess 档案,验证的方式可针对用户或群组,差别在于 require 这个参数。

针对用户:

AuthName "Restricted Area" # 名称必须用英文
AuthType Basic
AuthUserFile /path/to/.htusers
require user UserName1 # 仅针对特定用户,以空白分隔多个用户

上述的最后一行是只有 UserName1 允许进入,你也可以改成:

require valid-user # 针对全部用户

表示针对 .htusers 里的所有用户。

针对群组:

AuthName "Restricted Area" # 名称必须用英文
AuthType Basic
AuthUserFile /path/to/.htusers
AuthGroupFile /path/to/.htgroups
require group Group1 # 仅针对特定群组的用户,以空白分隔多个群组

表示针对 .htgroups 里,归属于 Group1 下的用户。

针对特定档案:

若你只想针对特定档案做保护,那可以与 <Files>~</Files> 一起使用:

<Files FileName>
     require valid-user
</Files>

<Files>~</Files> 一次只能填写一个档案,但支援正规表示式。以下是使用正规表示式限制图档存取的范例:

<Files ~ "\.(gif|jpe?g|png)$">
     require valid-user
</Files>

或是:

<FilesMatch "\.(gif|jpe?g|png)$">
     require valid-user
</FilesMatch>

设定好之后,当用户要存取该目录 (或档案),就会跳出叫你登入的对话框:


另外,你也可以在网址中直接输入你的帐号、密码,格式:

 http://UserName:Password@www.example.com/directory/

问题排除

如果在设定 htaccess 认证方式之后,在进入网页时,仍然没有跳出验证的对话框,则请编辑 /etc/httpd/conf/httpd.conf,搜寻相关的“AllowOverride”设定,改成:

AllowOverride All

安全性问题

虽然用户储存在 Server 端的密码有经过加密,但因为是采用 Basic 方式验证,当要存取网页时,用户输入的帐号与密码仅是以 Base64 编码,包裹在 Headers 里进行传输,有机会被窃听之后解码、盗用! 网站必须导入 SSL 才能完全在传输的过程中加密。

参考网页

[转载]Unicode 脱逸序列转换

转载自: IT Inside


这里提供一段程式码,可以透过 JavaScript 将文字转换为 Unicode 脱逸序列。这段程式码,不论是对网页开发人员,还是对 java resource bundle 的翻译人员,都有很大的方便性。使用时只要将底下的程式码复制起来,以 html 副档名储存,就可以用 browser 执行了。

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
<script language=javascript>
<!--
function StringToUniCode(source) {
  sret = "";
  // Unicode 跳脱序列之格式为 \u00ff
  for(var i=0; i < source.length; i++) {
   var num = new Number( source.charCodeAt(i));
   sret += "\\u" + num.toString(16);
  }
  return sret;
}
function convert(){
  document.forms.content.result.value = StringToUniCode(document.forms.content.source.value);
}
//-->
</script>
将文字转成 Unicode 跳脱序列
<form name=content>
来源:<input type=TEXT name=source size=40 value="常用连络人"><br />
结果:<input type=TEXT name=result size=40><br />
<input type=button value=转换 onclick="convert()">
</form>

HTTP 回应的代码含义

当我们在浏览网页的时候,经常会看到诸如 500 错误之类的讯息,这些错误代码所代表的含义作为网站的开发人员,应该必须了解的。

HTTP 的回应代码是三位数字,其中第一个数字定义了代码的类别:

范围 类别 含义
100~199 讯息 请求被接收,正在处理
200~299 成功 动作被成功接收、理解和接受
300~399 重新导向 必须采取其他动作才能完成请求
400~499 用户错误 请求包含不良语法或无法完成
500~599 服务器错误 服务器无法处理的请求

其中较常见的 HTTP 回应代码有:

  • 200: 请求成功
  • 400: 语法错误
  • 401: 未经授权
  • 403: 禁止访问
  • 404: 请求的网页不存在
  • 500: 服务器错误

Read more

return top