10/10/2018, 10:50

có cách nào tạo file .htaccess tránh truy cập trái phép ?

mình tạo xong một ứng dụng web tên là "ung_dung_web" , thư mục đó chứa file index.php và 2 thu mục "a","b"
trong thư mục "a" thì chứa 2 file "1.php","2.php"
trong thư mục "b" thì chứa 2 file "3.php","4.php"

còn file "index.php" thì nôm na là include lại 4 file 1.php,2.php,3.php,4.php nằm trong 2 thư mục "a","b"

và đương nhiên để chạy ứgn dụng này thì chỉ chạy file index.php thui

--> sẽ chạy link http://localhost/ung_dung_web/

tuy nhiên ở đây nếu như người ta chạy các link

http://localhost/ung_dung_web/a/1.php
http://localhost/ung_dung_web/a/2.php
http://localhost/ung_dung_web/b/3.php
http://localhost/ung_dung_web/b/4.php

thì sẽ chạy dc các link này , nhưng đây là điều mình không muốn bởi vì nếu nhu file 1.php,2.php có phần sử lý sql thêm, sữa , xóa thì có thể phá được co so du lieu của mình (se thực hiện ínert,delete gì đó)

đương nhiên để giải quyết chuyện đó chỉ cần code php đàng hoàn vào các file 1.php,2.php sẽ không xảy ra hiện tuong tren

nhung ở đây là là do ứng dụng viết xong có nhìu file như thế quá , fix môi tay nên mình muốn tìm hiểu xem .htaccess có thể làm chuyện đó dc hông
ngoc_viet08 viết 13:06 ngày 10/10/2018
htaccess chi cực vậy :| , vấn đề giản đơn mà cứ làm to ra . có 2 cách vậy nè :
- các file 1,2,3,4.php được sử dụng trong file index.php . ai có đủ quyền truy cập vào index.php thì cũng có thể được hành động như trong các file 1.2.3.4.php . phòng tránh ở đây là tránh những người ko được dùng index.php nhưng vẫn dùng lén dc 1,2,3,4.php . thì trong 4 file kiểm tra điều kiện được sử dụng như trong file index.php. điều kiện gì thì tùy thuộc vào ứng dụng bạn nhá.

-cách thứ 2 là tại file index.php tạo ra 1 hằng số . trong file 1,2,3,4.php kiểm tra xem hằng số này tồn tại hay ko , nếu ko thì báo lỗi ko cho truy cập , nếu tồn tại thì sẽ sử dụng được (vì lúc này chính xác là file index.php đang sử dụng các file trên)
moi_hoc_web viết 12:58 ngày 10/10/2018
cách thứ nhất không hỉu , nhưng cách thứ 2 thì mình đã sài rùi và hiệu quả

nhưng 1 ứng dụng web đâu chỉ có 4 file 1,2,3,4.php mà còn nhìu file (có khi lên trăm file)(mình kẹt là ở chỗ khi viết code không phải lúc nào cũng nhớ để ghi ra hằng số nên thanh ra có file kiểm tra dc có file thì không) --> moi thử suy nghi xem .htaccess có làm dc không , chứ h check lại từng file thì hơi bị mệt
thuyduongcd viết 12:59 ngày 10/10/2018
Thêm đoạn code này vào đầu mỗi file 1.php, 2.php,...
Code:
if(count(get_included_files()) ==1) exit("Direct access not permitted.");
moi_hoc_web viết 12:55 ngày 10/10/2018
@thuyduong : cách của cậu cũng giống cách thứ 2 cua ngocviet , làm vậy cung dc nhưng 100 file fix mệt lắm
thuyduongcd viết 12:57 ngày 10/10/2018
Cũng chẳng có gì mệt cả. Viết 1 đoạn code ngắn, duyệt tất cả các file đọc nội dung (php thường là dạng text), chèn câu này trên đầu và save lại.
Thao tác này chưa tới 10 phút, quá ngắn so với thời gian chờ câu trả lời đích thực. (Có lẽ những người có thể trả lời đều kéo nhau đi lập nhóm riêng hết rồi)
Cách này có một ưu điểm là có thể xuất trực tiếp câu thông báo cho người dùng biết.

Còn muốn dùng .htaccess thì thử như thế này, trong mỗi thư mục a, b, ... tạo file .htaccess với nội dung:
Code:
order allow,deny
deny from all
Khi người ta truy cập vào bất cứ file nào trong thư mục này sẽ xuất hiện lỗi 403 - Forbidden
moi_hoc_web viết 13:01 ngày 10/10/2018
uh , đành chọn 1 trong các cách của mấy bạn vậy ;;;
thank all
anhchanghaudau viết 12:55 ngày 10/10/2018
Mỗi tập tin abc đều có inlcude một tập tin thư viện cơ sở của bạn chẳng hạn
main_lib.php
Trong main_lib:

// code thư viện

// kiểm tra có khai báo hằng số không, nếu không thì redirect
if(!defined('tên hằng số'))
{
// redirect
}

Trong index.php
define hằng số
include main_lib.php

Các file abc thì include main_lib nhưng không có dòng define
Bài liên quan
0