Khai thác trong tham số bash script có thể?


9

Tôi muốn chuyển một địa chỉ e-mail từ một biểu mẫu web sang tập lệnh bash. Tôi đang sử dụng regex sau:

/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/

Điều này có đủ không? Hoặc người ta có thể nhúng một khai thác?

Kịch bản được gọi từ PHP:

system('/usr/local/bin/script.sh "$email"');

4
Làm tốt ngay cả khi hỏi. Tôi không thấy bất kỳ tiềm năng khai thác nào nhưng bạn có thể từ chối một số địa chỉ email hợp lệ và chấp nhận một số địa chỉ email không hợp lệ. Oh và bạn nên neo regex của bạn .
tự đại diện

1
@Wildcard Thật vậy, việc thiếu neo khiến cho regrec trở nên vô dụng như một bài kiểm tra bảo mật!
Gilles 'SO- ngừng trở nên xấu xa'

Đây có thể là một địa chỉ email hợp lệ "the doctor"@gallifrey.com. Lưu ý không gian được trích dẫn trong thành phần tên người dùng.
roaima

tại điểm nào bạn lo lắng về một khai thác? Dòng tiêu đề nói 'bash', do đó, mối quan tâm về việc mở rộng trong khi chuyển email $ dưới dạng đối số (được trích dẫn) cho script.sh hoặc xử lý giá trị đã qua của script.sh hoặc tính nghiêm ngặt của (có lẽ dựa trên PHP ) regex, hay ???
Jeff Schaller

Không rõ làm thế nào regrec được sử dụng trong tập lệnh của bạn. Để phân tích tốt, vui lòng cung cấp các phần có liên quan của tập lệnh của bạn.
jofel

Câu trả lời:


1

Bạn có thể vệ sinh và xác thực địa chỉ email trong PHP, việc này sẽ nhanh hơn và an toàn hơn so với việc gọi một tập lệnh shell. Gọi một tập lệnh shell với dữ liệu không được xác nhận từ một dịch vụ web sẽ chỉ thêm một điều nữa có thể phá vỡ.

$sanitized_email = filter_var($email, FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized_email, FILTER_VALIDATE_EMAIL)) {
    echo "This sanitized email address is considered valid.\n";
    echo "Before: $email\n";
    echo "After:  $sanitized_email\n";    
} else {
    echo "This sanitized email address is considered invalid.\n";
}

Ví dụ trên được điều chỉnh từ các ví dụ trên trang web PHP.net .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.