2010-05-27 12 views
8

Vì có quá nhiều ký tự hợp lệ cho địa chỉ email, có địa chỉ email hợp lệ nào có thể là tấn công XSS hoặc tiêm SQL không? Tôi không thể tìm thấy bất kỳ thông tin nào về điều này trên web.Địa chỉ email hợp lệ - XSS và SQL Injection

Các địa phương phần của địa chỉ e-mail có thể sử dụng bất kỳ các ký tự ASCII:

  • Chữ hoa và chữ cái tiếng Anh chữ thường (a-z, A-Z)
  • chữ số 0 đến 9
  • Ký tự! # $% & '* + -/=?^_ `{| } ~
  • Ký tự. (dấu chấm, dấu chấm, dấu chấm đầy đủ) miễn là nó không phải là ký tự cuối cùng và cũng được cung cấp rằng nó không xuất hiện hai hoặc lần nữa liên tiếp (ví dụ: John..Doe @ example.com).

http://en.wikipedia.org/wiki/E-mail_address#RFC_specification

Tôi không yêu cầu làm thế nào để ngăn chặn các cuộc tấn công (Tôi đã sử dụng các truy vấn parametrized và thoát/lọc HTML), đây là thêm một khái niệm bằng chứng-of-.

Điều đầu tiên xuất hiện trong đầu là 'OR [email protected], ngoại trừ không gian đó không được phép. Tất cả các lần tiêm SQL có cần không gian?

Trả lời

12

Spaces được phép nếu chúng được đặt trong dấu ngoặc kép, tuy nhiên, vì vậy "'OR 1=1--"@gmail.com là một địa chỉ e-mail hợp lệ. Ngoài ra, nó có thể là ít hơn của một mối quan tâm, nhưng nói về mặt kỹ thuật, đây là cả hai địa chỉ e-mail hợp lệ:

' BAD SQL STUFF -- <[email protected]> 
[email protected] (' BAD SQL STUFF --) 

Thậm chí nếu điều này là không thể, vẫn còn có lý do gì mà bạn không nên sử dụng các truy vấn paramaterized và mã hóa tất cả dữ liệu do người dùng nhập được hiển thị cho người dùng.

+0

Có thể sử dụng http://isemail.info/ để kiểm tra bất kỳ địa chỉ email nào bạn thích hoặc chỉ cần kiểm tra bằng bộ lọc trên địa chỉ email được tiêm thông qua một số chức năng php như lọc xác thực email. Dựa trên isemail.info, địa chỉ đầu tiên không hợp lệ và địa chỉ thứ hai là "Địa chỉ hợp lệ trong thư nhưng không thể được sử dụng chưa sửa đổi cho phong bì" – Kzqai

-5
/^[a-z0-9.-_+]@[a-z0-9.-]$/i 

tôi nghĩ rằng phù hợp như 99,9999% của tất cả các địa chỉ email;)

+1

btw. thats chỉ để xác minh nếu các văn bản không được đóng gói với xss/sql tiêm vv - nó không phải là một cách để xác nhận một địa chỉ email. – Tobias