2011-09-06 27 views
5

Trong biểu mẫu HTML tôi đã viết, người dùng có thể tải lên tệp được gửi đi khi gửi bằng ajax. Tập lệnh nằm trên exampledomain.com/upload.php.Làm cách nào để cho phép tải lên PHP chỉ từ một tên miền?

Tôi muốn tránh tình huống ai đó sắp tạo biểu mẫu của riêng mình bằng hành động trỏ tới upload.php và bắt đầu gửi spam máy chủ của tôi bằng các tệp trái phép.

Mọi người đều có thể điền vào biểu mẫu HTML của tôi để bảo vệ đăng nhập/mật khẩu để tải lên không phải là một tùy chọn cho tôi. Có cách nào hiệu quả để đảm bảo rằng upload.php sẽ chỉ được kích hoạt từ biểu mẫu HTML trên trang web của tôi không?

Một cách để giải quyết vấn đề đó là sử dụng các phiên, nhưng tôi không chắc chắn về cách hoạt động của nó với ajax. Bất kỳ đề xuất?

Trả lời

0

cách tốt nhất để bảo vệ chống lại những người gửi spam là captcha (Thử dùng lại). các kỹ thuật khác cần lưu ý là mã duy nhất trong biểu mẫu ẩn (tốt để bảo vệ chống lại các cuộc tấn công clrf), xác minh tên miền bằng $ _SERVER [''] nhưng tương đối dễ dàng để truy cập

0

Thêm biến PHP vào trang hoạt động giống như mật khẩu, nhưng thay vì giá trị tĩnh có thể được sao chép, hãy sử dụng giá trị được tính sẽ thay đổi từng phút.

Giá trị được tính được gửi sẽ phải khớp với giá trị được tính trong tệp upload.php để cho phép gửi tệp.

Điều này vẫn không ngừng gửi spam qua trang web của bạn.

3

Mặc dù Cross Site Request Forgery thường được phân loại là tấn công tài khoản của người dùng đã được xác thực thông qua một trang web khác, các kỹ thuật được sử dụng để chống lại nó sẽ hoạt động cho bạn ở mức độ nào đó, ngay cả khi bạn nói, người dùng của bạn không được xác thực như vậy.

Cụ thể, tạo một giá trị duy nhất (một lần) với mọi hình thức, như được mô tả trong Jeff Atwood's article here sẽ giúp ngăn chặn các trang web khác gửi dữ liệu đến máy chủ của bạn - nếu bạn xác thực giá trị không được gửi bằng POST yêu cầu là một trong những bạn đã tạo gần đây, ít nhất nó phải đến từ một người đã "truy cập" trang web của bạn bằng cách nào đó.

Tuy nhiên, điều đó sẽ không ngăn người gửi spam tấn công trang web của bạn bằng cách cạo các giá trị nonce từ trang web của bạn, tức là giả vờ là người dùng và sử dụng biểu mẫu thực tế của bạn. Đối với điều đó, bạn có thể muốn xem xét các kỹ thuật khác nhau như CAPTCHA s, danh sách đen và các xác thực khác.

Cá nhân, tôi nghĩ nếu bạn không sử dụng người dùng đã được xác thực (theo đó tôi muốn yêu cầu CAPTCHA và xác thực địa chỉ email để người dùng đăng ký, sau đó yêu cầu họ xác thực trước khi tải lên) thì tôi ' d nói rằng bạn muốn khá nhiều để sử dụng hệ thống CAPTCHA tốt, có thể kết hợp với việc kiểm tra thường xuyên hoạt động bất thường và lấy mẫu video tải lên để chống lại spam và tấn công không thể tránh khỏi. Có một lý do khiến các dịch vụ web phổ biến nhất yêu cầu những kiểm tra này, thật đáng buồn.

(Ngẫu nhiên, các phiên hoạt động tốt với Ajax - chỉ cần đảm bảo sử dụng cùng một mã xử lý phiên trong trang phản hồi yêu cầu Ajax. Nhưng không có người dùng được xác thực, các phiên sẽ không mua bất kỳ thứ gì trong cách an toàn, theo như tôi thấy. Một spambot có thể đối phó hoàn toàn tốt với các phiên.)

1

Tôi muốn tránh tình huống ai đó định tạo biểu mẫu của riêng mình bằng hành động trỏ tới upload.php và bắt đầu gửi spam máy chủ của tôi với các tệp trái phép.

Điều đó là không thể.

Làm cách nào để cho phép tải lên PHP chỉ từ một tên miền?

Để cho bạn biết, các tệp được tải lên không phải từ "tên miền" mà chỉ từ máy tính của người dùng.

Miễn là bạn có đăng ký không giới hạn trên trang web của mình, bất kỳ ai cũng có thể spam. Bạn phải chọn một sự bảo vệ chống lại mối đe dọa tưởng tượng này.

0

Bạn cũng có thể calc kích thước của tệp được tải lên trong Kbytes và đính kèm số nguyên đó vào biến phiên và kiểm tra biến đó trong trang đích tiếp theo sau khi đăng nhập!

Các vấn đề liên quan