6

Tôi đang phát triển một dự án trên công cụ ứng dụng của Google (khung công cụ webapp). Tôi cần mọi người đánh giá cách tôi xử lý các ngoại lệ.thiết kế để xử lý ngoại lệ - công cụ ứng dụng google

Có 4 loại ngoại lệ tôi đang xử lý:

  1. Lập trình ngoại lệ
  2. Xấu người dùng nhập vào
  3. URL không đúng
  4. chuỗi truy vấn không đúng

Dưới đây là cách tôi xử lý chúng:

  1. Tôi đã phân lớp lớp webapp.requesthandler và loại bỏ phương thức handle_exceptions. Bất cứ khi nào một ngoại lệ xảy ra, tôi đưa người dùng đến trang "chúng tôi xin lỗi" thân thiện và trong thời gian chờ đợi, gửi một tin nhắn với traceback cho quản trị viên.

  2. Về phía khách hàng, tôi (sẽ) sử dụng js và cũng xác thực ở phía máy chủ. Ở đây tôi con số (như một coder với kinh nghiệm không web) ngoài việc xác nhận đầu vào theo logic lập trình (kiểm tra: đầu vào tiền mặt là loại nổi?) Và quy tắc kinh doanh (kiểm tra: người dùng có đủ điểm để thực hiện hành động đó không?), Tôi cũng phải kiểm tra các ý định độc hại. Tôi nên thực hiện các biện pháp nào để chống lại các hành động nguy hiểm?

  3. Tôi có URL nắm bắt xử lý URL không chính xác. Tức là, tôi đưa người dùng đến trang "trang không tồn tại" tùy chỉnh. Ở đây tôi không có vấn đề gì, tôi nghĩ vậy.

  4. Chuỗi truy vấn không chính xác có lẽ sẽ tăng ngoại lệ nếu được để lại cho chính họ. Nếu một ID không tồn tại, phương thức sẽ trả về None (một ngoại lệ là trên đường đi). nếu tham số không thuận tiện, mã sẽ đưa ra một ngoại lệ. Ở đây tôi nghĩ tôi phải nâng cấp 404 và đưa người dùng đến trang "trang không tồn tại" tùy chỉnh. Tôi nên làm gì?

Ý kiến ​​của bạn là gì? Cảm ơn trước ..

+1

Không có điểm nào trong việc xác thực cho đầu vào độc hại ở phía máy khách - bất kỳ người dùng độc hại nào cũng sẽ vô hiệu hóa hoặc né tránh nó. –

+0

ok, tôi phải làm gì ở phía máy chủ? – shanyu

Trả lời

5

Bạn dường như đã suy nghĩ mọi thứ qua khá tốt. Điều duy nhất tôi sẽ thêm là bạn có thể muốn xem Bloog làm ví dụ. Bloog là một công cụ blog mã nguồn mở khá phổ biến và được viết cho App Engine được viết bằng Python.

Ngoài ra, trên Điểm số 2, hãy chú ý theo dõi these types trong số các cuộc tấn công Cross Scripting.

Đối với # 4, hãy nhớ rằng trang 404 là cơ hội để thêm một số color and creativity vào thiết kế của bạn.

+0

Cảm ơn, tôi sẽ. Bất kỳ đề xuất nào về điểm 2 và 4? – shanyu

+0

Tôi đã cập nhật câu trả lời của mình để thêm một số nhận xét vào # 2 và # 4. Có vẻ như bạn đã nghĩ điều này qua khá tốt. – Serx

+0

Xin cảm ơn, một lần nữa. Tôi sẽ đi qua các liên kết bạn đã cung cấp. – shanyu

0

Quảng cáo. # 4: Tôi thường coi chuỗi truy vấn là không cần thiết. Nếu bất cứ điều gì là sai với chuỗi truy vấn, tôi chỉ trình bày trang tài nguyên trần (như thể không có truy vấn), có thể với một số thông tin cho người dùng những gì đã sai với chuỗi truy vấn.

Điều này dẫn đến sự cố tương tự với số 3 của bạn: người dùng đã truy vấn sai như thế nào? Ứng dụng của tôi có tạo URL sai ở đâu đó không? Hoặc là nó đã lỗi thời liên kết trong một số dịch vụ bên ngoài, hoặc lưu bookmark? HTTP_REFERER có thể chứa một số đầu mối, nhưng tất nhiên là không có thẩm quyền, vì vậy tôi sẽ đăng nhập truy vấn có vấn đề (với một số tiêu đề HTTP bổ sung) và cố gắng điều tra trường hợp.

+0

Cảm ơn câu trả lời. Tôi đoán một trong những lý do dẫn đến điểm 3 là người dùng cố gắng điều gì đó "không cần thiết" bằng cách sửa đổi chuỗi truy vấn. – shanyu