Bảo mật với htaccess 2007-07-09 09:27:05

Mấy hôm ngồi viết lại phpbasic, vọc vọc htaccess 1 hồi TG chợt nghĩ ra 1 cách bảo mật qua url với htaccess nên post lên đây chia sẽ cùng anh em.  Cách này chỉ chống được các tấn công qua url.
Ví dụ:
nội dung tập tin .htaccess
RewriteEngine on
RewriteRule ^index.php?action=[^(a-zA-Z0-9)] index.php

File htaccess này có tác chuyển các url có dạng: index.php?action=<không phải ký tự a,b,.. hoặc số> về trang index.php

Ở đây thay vì dùng PHP để kiểm tra tính hợp lện của biến $_GET['action'] thì TG dùng htaccess, khi kiểm tra bằng PHP thì PHP lấy dữ liệu xuống rồi sử lý còn dùng htaccess  thì url được server kiểm tra trước sau đó mới đưa qua PHP

Và còn 1 chỗ mà ít khi anh em để ý, ví dụ trong 1 bộ code có rất nhiều file .php và các file này được include vào để chạy(config.php,db.php,...), nếu 1 file được gọi thì có thể không chạy cũng có thể báo lỗi đủ thứ và làm lộ nhiều thông tin về website, nên có thể dùng htaccess để không cho truy cập vào các file này

RewriteEngine on
RewriteRule ^(.*).php error.html

Bỏ tập tin access vào những thư mục file .php không được phép gọi trực tiếp, khi người dùng cố tình gọi vào file này thì nó tự động chuyển sang 1 file error.html (do bạn tự tạo)

Tóm lại, là có thể dùng htaccess để kiểm tra url theo đúng định dạng người code yêu cầu, tất cả các link không đúng định dạng có sẽ không được đưa đến PHP smile.

Mấy ngày mới phát hiện được nhiêu đó, anh em góp ý thêm nha.

(Ghi rõ nguồn "phpbasic.com" khi phát lại thông tin từ website này.)
Tác giả: TG

Tra loi 9 comment(s) NguyÅn Minh Tân 2007-07-09 09:27:05

Văn Trường 2007-08-15 03:45:16

Rất hay! :D
Thêm 1 dòng cho đủ 20 ký tự :D

Tra loi

gaulucky92 2008-02-21 11:13:07

Nếu bảo mật = php có thể dùng define chứ nhỉ ^^
Có điều ko được thuận tiện khi include 1 file tong nhiều file...

Tra loi

cỏ úa 2008-02-21 11:37:29

Cho hỏi 1 vài thắc mắc
RewriteEngine on
RewriteRule ^index.php?action=[^(a-zA-Z0-9)] index.php
Theo tôi biết đáng lẽ phải là
RewriteRule  index.php ^index.php?action=[^(a-zA-Z0-9)]

Thứ 2
RewriteEngine on
RewriteRule ^(.*).php error.html

Ta chạy web thì đường nào cũng phải chạy tập tin index.php mặc định nếu như vậy theo .htaccess trê thì khi chạy index.php nó sẽ chạy tập tin lỗi rồi ko kể đến admin.php nữa
Kiến thức rewrite mới biết ko biết hiểu đúng ko nếu sai anh em bỏ qua nha

Tra loi

gaulucky92 2008-02-22 11:37:49

Nếu vậy thì mấy file cần bảo mật phải cho vào 1 thư mục riêng rồi, ngoài root_dir chỉ có index.php và admin.php thôi ^^
Xài htaccess để chuyển tất cả link dynamic (như index.php?act=blah&page=blah...) thì trang web mình trở thành dạng cloacking domain :D Không nên dùng, chỉ nên chuyển link gốc thành dạng friendly URL (giống phpbasic) để người dùng dễ nhớ link cũng như giúp bảo mật an toàn...

Tra loi

GT 2008-02-25 05:55:54

sao em xài cái này ko đc nhỉ. Bỏ vào khi truy cập index.php?action=blahblah vẫn chạy ngon lành. Ai help em chút

Tra loi

gaulucky92 2008-02-25 08:51:04

dĩ nhiên vì link đó là link gốc mà ^^ Bạn vào địa chỉ ảo hay thật thì cũng như nhau thôi.

Tra loi

coder 2009-09-21 11:35:32

bạn ơi thế mình chứa tập tin .htaccess ở thư mục nào nhỉ!

Tra loi

Tống Kiện Phi 2009-09-21 11:59:23

thông thường file htaccess được đặt ở thư mục gốc của website

Tra loi

newbie 2009-10-08 01:32:40

sao em vừa thêm file .htaccess này vô thư mục thì lập tức thư mục do ko còn truy cập được nữa và nó báo lỗi Internal Server ErrorBold ? Vậy là sao vậy mấy anh? Và làm cách nào để sửa lại bây giờ?

Tra loi

Y kien