Sử dụng .htaccess và .htpasswd

Hôm nay lên HVA hỏi cách tạo bảng nhập user và pass trước khi vào pass trước khi vào webiste thì được cái này🙂

http://www.hvaonline.net/hvaonline/posts/list/31338.hva

Thấy hay quá, post lên đây không sợ mất😀

1.Thiết lập chế độ để sử dụng được 2 file này.
Tìm file cấu hình của Apache thường là httpd.conf(hoặc là access.conf) tìm và thay thế đoạn mã AllowOverride None thành AllowOverride AuthConfig rồi save nó. Khởi động lại Apache là có thể sử dụng 2 file này.

2.Tạo 2 file này.
Sử dụng notepad để soạn thảo hoặc có thể sử dụng bất cứ trình soạn thảo nào lưu lại nó với tên .htaccess và .htpasswd

3.Sử dụng 2 file trên.
+, Tạo Trang báo lỗi:
Trong quá trình làm việc với client, nếu có lỗi xảy ra thì Apache sẽ báo lỗi bằng một trang có sẵn hiển thị mã lỗi đó. Khi sử dụng .htaccess có thể tự tạo trang báo lỗi riêng cho mình.
Để làm được điều đó thì trong tập tin .htaccess thêm các dòng như sau:
ErrorDocument mã số lỗi/trangloi.html
trong đó số mã lỗi là số mã lỗi phát sinh khi truy cập trang web, đây là những lỗi thường gặp:
. 401 – Authorization Required(yêu cầu password để truy cập)
. 400 – Bad required(yêu cầu lỗi)
. 403 – Forbidden(không được vào)
. 500 – Internal Server Error(lỗi do Server)
. 404 – Wrong page(lỗi trang, có thể không tìm thấy trang)
còn trangloi.html là trang web muốn hiển thị lỗi phát sinh, có thể đưa vào trang này bất cứ nội dung gì, chẳng hạn liên kết trở về trang chính của trang web.
ví dụ: gõ vào trong tập tin .htaccess như lỗi 404 như sau: ErrorDocument 404/trangloi.html

+, Chống ăn cắp băng thông(badwidth)
Thông thường những dịch vụ lưu trữ web cung cấp cho một lượng dữ liệu luân chuyển(data transfer) nhất định hàng tháng khi sử dụng hết lượng dữ liệu này, website sẽ tự động bị đóng cửa. Và sẽ phải trả thêm tiền cho lượng băng thông vượt quá hoặc phải buộc lòng chờ đến tháng sau.

Nếu hình ảnh, dữ liệu, … bị các website khác “chôm chỉa”(thường là sử dụng thủ thuật đơn giản) làm cho lượng dữ liệu luân chuyển tăng lên, thì sẽ phải trả thêm tiền cho cái mà mình không sử dụng. Sử dụng tập tin .htaccess là một giải pháp rất tốt! Để ngăn chặn việc sử dụng trái phép hình ảnh trên website. Chỉ cần đưa vào tập tin .htaccess nội dung sau:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?trangweb\.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ - [F]

chỉ cần thay đổi trangweb.com thành địa chỉ website của mình là ok.

Có thể sử dụng hình ảnh nào đó cảnh báo những kẻ “chôm chỉa” băng thông sử dụng dòng lệnh sau:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?trangweb\.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ http://www.trangweb.com/diehotlinker.jpg [R,L]

+, Không cho hiện danh sách tập tin trong thư mục.
Trong trường hợp một thư mục nào đó không có tập tin index hay default, thì Apache sẽ hiển thị một danh sách liệt kê các tập tin trong thư mục đó. Tuy nhiên nếu đây là những tài liệu nhạy cảm, không muốn người khác thấy, thì thêm vào file .htaccess dòng lệnh sau:

Options –Indexes

+, Thay thế trang index
Thông thường khi truy nhập vào một trang web, Apache sẽ tìm đến tập tin index.html hoặc default.html để tra kết quả về cho trình duyệt, có thể sử dụng .htaccess để thay đổi mặc định này:

DirectoryIndex index.php index .php3 messagebrd.pl index.html index.htm

với dòng lệnh này thì các tập tin được liệt kê sẽ được tìm theo thứ tự khi có yêu cầu tới thư mục hiện hành, trang nào được tìm thấy đầu tiên sẽ là trang index của thư mục.

+, Cấm hạn chế IP truy nhập
Một số người muốn làm “lụt”(flood) trang web, việc cần làm là ngăn cấm những IP của những người này truy cập vào trang web, thêm đoạn mã sau vào .htaccess:
dùng để ngăn cấm địa chỉ IP là 203.262.110.20 truy cập vào trang web.

deny from 203.262.110.20

Cho phép địa chỉ IP truy nhập trang web:

allow from 203.262.110.20

Nếu sử dụng IP dưới dạng: 203.262.110 thì sẽ cấm tất cả các IP có địa chỉ từ 203.262.110.1 đến 203.262.110.254.

Cấm tất cả mọi truy cập đến trang web trong thư mục sử dụng:

deny from all

tuy nhiên các tập tin trong đó vẫn có thể sử dụng từ bên ngoài thông qua các lệnh dạng require hay include(trong lập trình PHP).

+, Bảo vệ thư mục.
sử dụng 2 file .htaccess và .htpasswd trong cho việc bảo vệ thư mục và chống flood.
tạo file .htaccess có nội dung như sau:

AuthUserFile “đường dẫn đến tập tin .htpasswd”
AuthName “dòng văn bản hiển thị”
AuthType Basic
require valid-user

trong đó valid-user sẽ chỉ định các thành viên với mật khẩu trong tập tin .htpasswd, nếu bạn muốn định rõ một thành viên nào đó thì thay đổi dòng này như sau:

require user tên_user

sau đó tạo một file .htpasswd với nội dung như sau:

User: password

gõ tên user đăng nhập rồi đến dấu “:” rồi gõ mật khẩu đăng nhập.
ví dụ sử dụng file .htaccess như sau:

AuthUserFile "/home/username/public_html/forum/.htpasswd"
AuthName "Anti Stupid Flooders! User=anti Pass=1 khoang trang"
AuthType Basic
require valid-user

Ở đây /home/username/public_html/forum/.htpasswd ->chính là đường dẫn đến tập tin .htpasswd
User=anti Pass=$# là dòng chữ hiện lên trên bảng đăng nhập, muốn viết gì cũng được.

+, Tự động chuyển đến địa chỉ mới
Muốn chuyển trang web đến địa chỉ mới, redirect truy cập từ xa bằng một lệnh đơn giản sau:

Redirect/olddirectory http://www.trangwebmoi.com/thumucmoi

+, Tùy biến đuôi tập tin.
Thông thường tùy thuộc vào ngôn ngữ lập trình web mà sử dụng tập tin có phần mở rộng khác nhau như: html, htm, asp, aspx, php, cgi, …Tuy nhiên nếu sử dụng .htaccess thì có thể tác động vào máy chủ Apache, Apache sẽ gọi đến tập tin và trả về cho trình duyệt web với phần mở rộng do mình quy định trong .htaccess. Sử dụng đoạn lệnh sau trong tập tin .htaccess:

RewriteEngine on
RewriteRule (.*)\.dll$ $1.html

html là phần mở rộng thực sự của những tập tin trên website, dll là phần mở rộng do mình lựa chọn. Chú ý liên kết trên trang web, phải gọi đúng đường dẫn đến tập tin với phần mở rộng mới(ở trên là dll), ví dụ như: http://www.trangweb.com/index.dll
+, để sử dụng
—>Chú ý khi sử dụng .htaccess
. – Chỉ sử dụng .htaccess trên Apache đã bật chế độ .htaccess, nếu chưa có thì liên hệ với nhà cung cấp hosting để họ có thể đáp ứng.
. – .htaccess chỉ có tác dụng với những tập tin ngang hàng(trong cùng thư mục với nó) hoặc thư mục con. Với thư mục thì nó chỉ có tác dụng với thư mục chứa nó và thư mục con. Không có tác dụng với các thư mục cha, mẹ.
. – Có thể sử dụng một số chương trình FTP (Leaf FTP, WS FTP, Cute FTP) để tải tập tin .htaccess lên hosting của mình với chế độ ASCII, nếu nó không hoạt động có thể CHMODE với giá trị 644.

Link http://my.opera.com/manhtn/blog/su-dung-htaccess-va-htpasswd?cid=10227529#comment10227529

4 thoughts on “Sử dụng .htaccess và .htpasswd

  1. +, Bảo vệ thư mục.
    sử dụng 2 file .htaccess và .htpasswd trong cho việc bảo vệ thư mục và chống flood.
    tạo file .htaccess có nội dung như sau:

    AuthUserFile “đường dẫn đến tập tin .htpasswd”
    AuthName “dòng văn bản hiển thị”
    AuthType Basic
    require valid-user

    trong đó valid-user sẽ chỉ định các thành viên với mật khẩu trong tập tin .htpasswd, nếu bạn muốn định rõ một thành viên nào đó thì thay đổi dòng này như sau:

    require user tên_user

    sau đó tạo một file .htpasswd với nội dung như sau:

    User: password

    gõ tên user đăng nhập rồi đến dấu “:” rồi gõ mật khẩu đăng nhập.
    ví dụ sử dụng file .htaccess như sau:

    AuthUserFile “/home/username/public_html/forum/.htpasswd”
    AuthName “Anti Stupid Flooders! User=anti Pass=1 khoang trang”
    AuthType Basic
    require valid-user

    Ở đây /home/username/public_html/forum/.htpasswd ->chính là đường dẫn đến tập tin .htpasswd
    User=anti Pass=$# là dòng chữ hiện lên trên bảng đăng nhập, muốn viết gì cũng được.

    Cái này sao mà test lại không được nhỉ, toàn báo là Internal Server Error

    Trả lời
  2. Đã cài được theo cách của bác KraelfVN

    <?php
    session_start();

    $username = "test";
    $password = "test";

    if(isset($_GET['logout']))
    {
    unset($_SESSION["login"]);
    echo "You have logout ... ";
    echo "[Login]";
    exit;
    }

    if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || !isset($_SESSION["login"]))
    {
    header("WWW-Authenticate: Basic realm=\"Test\"");
    header("HTTP/1.0 401 Unauthorized");
    $_SESSION["login"] = true;
    echo "You are unauthorized ... ";
    echo "[Login]";
    exit;
    }
    else
    {
    if($_SERVER['PHP_AUTH_USER'] == $username && $_SERVER['PHP_AUTH_PW'] == $password)
    {
    echo "You have logged in ... ";
    echo "[Logout]";
    }
    else
    {
    unset($_SESSION["login"]);
    header("Location: " . $_SERVER['PHP_SELF']);
    }
    }

    // content here

    ?>

    Trả lời

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s