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
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) 2007-07-09 09:27:05
Văn Trường 2007-08-15 03:45:16
Thêm 1 dòng cho đủ 20 ký tự :D
Tra loi
gaulucky92 2008-02-21 11:13:07
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
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
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
Tra loi
gaulucky92 2008-02-25 08:51:04
Tra loi
coder 2009-09-21 11:35:32
Tra loi
Tống Kiện Phi 2009-09-21 11:59:23
Tra loi
newbie 2009-10-08 01:32:40
Tra loi
Y kien