PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để tôi có thể truy vấn một cách an toàn (gián tiếp) cơ sở dữ liệu postgresql trong android?

Phiên bản nhanh:

Sử dụng lớp giữa của dịch vụ web chạy trên máy chủ công cộng mà bạn kiểm soát (có thể nhưng không nhất thiết là máy chủ cơ sở dữ liệu). Hiển thị các phương pháp dịch vụ web công cộng để thực hiện công việc hạn chế mà bạn muốn cho phép và không có gì khác.

Câu hỏi liên quan:

Tùy chọn triển khai

Cá nhân tôi muốn sử dụng một máy chủ ứng dụng Java như Apache Tomcat hoặc JBoss AS 7 và tôi sẽ viết các phương pháp dịch vụ web của mình bằng cách sử dụng JAX-RS để tạo ra một API kiểu REST đẹp cho ứng dụng của tôi sử dụng. Đó là những gì tôi quen thuộc và nó hoạt động tốt, nhưng bạn có rất nhiều tùy chọn bao gồm triển khai:

  • Các API giống REST (JAX-RS của Java kết hợp Jersey và RESTEasy, các công cụ ngôn ngữ khác nhau) sử dụng các yêu cầu HTTP và tạo ra các câu trả lời JSON hoặc XML.

  • SOAP với WSDL, lớp "dịch vụ web" cổ điển. Trong Java được thực hiện với JAX-WS trong số các tùy chọn khác. Hầu hết các ngôn ngữ đều có công cụ cho SOAP + WSDL nhưng rất khó hoạt động, đặc biệt là trên các thiết bị được kết nối không liên tục như điện thoại di động.

  • XML-RPC nếu bạn thích đau

Có một số JAX-RS khởi động nhanh trên JBoss AS 7 khởi động nhanh danh sách; chỉ cần tìm kiếm "JAX-RS". " bồn rửa chén / a> "quickstart rất hữu ích, mặc dù có lẽ không lý tưởng nếu bạn không quen thuộc với các kiến ​​thức cơ bản về JBoss AS 7 và Jave EE 6. Tăng cường các thông số cụ thể của JAX-RS, bạn tốt hơn nên sử dụng hướng dẫn Jersey hoặc RESTEasy như cái này hoặc điều này .

Những cân nhắc quan trọng

Sử dụng HTTP nếu có thể và nếu quyền truy cập không được công khai, hãy sử dụng lược đồ xác thực HTTP phù hợp như xác thực HTTP cơ bản qua HTTP. Bất kỳ triển khai dịch vụ web tốt nào sẽ cung cấp các tùy chọn xác thực hoặc hỗ trợ các tùy chọn của nền tảng mà nó chạy trên đó. Tránh cám dỗ triển khai xác thực và quản lý người dùng của riêng bạn ở lớp dịch vụ web, bạn sẽ vặn nó lên; sử dụng xác thực tại lớp HTTP đã được viết và thử nghiệm. Điều này có thể yêu cầu sử dụng một cái gì đó như mod_auth_pgsql của Apache , Các lĩnh vực bảo mật JDBC của JBoss AS 7, v.v. Trường hợp duy nhất tôi xem xét là không thực hiện xác thực HTTP cho mỗi người dùng thích hợp là tôi không cần phải tách người dùng của mình vì lý do bảo mật, tôi chỉ quan tâm rằng ứng dụng của tôi đang truy cập máy chủ , tức là nếu yêu cầu bảo mật của tôi khá yếu. Trong trường hợp này, tôi sẽ sử dụng tên người dùng / mật khẩu cố định cho toàn bộ ứng dụng và có thể là chứng chỉ ứng dụng khách X.509 nếu Android hỗ trợ chúng.

Hãy nhớ rằng bất kể bạn bảo mật mọi thứ bằng cách nào, tất cả thông tin đăng nhập đều được người dùng biết đến hoặc có thể được trích xuất một cách vặt vãnh từ .apk, vì vậy bạn vẫn phải cho rằng bất kỳ ai cũng có thể truy cập vào các phương thức dịch vụ web của bạn, không chỉ ứng dụng của bạn. Viết chúng cho phù hợp.

Đ ừng chỉ cần gửi SQL từ ứng dụng của bạn qua lệnh gọi dịch vụ web tới máy chủ và trả về kết quả dưới dạng JSON. Điều này thật kinh khủng không an toàn, cũng như xấu xí và cục mịch. Viết phương thức dịch vụ web cho từng tác vụ riêng lẻ mà bạn muốn ứng dụng có thể thực hiện và giữ SQL trong máy chủ. Hãy nhớ sử dụng các truy vấn được tham số hóa và cẩn thận với các rủi ro chèn SQL khác. Các phương pháp dịch vụ web này có thể sử dụng một hoặc nhiều truy vấn để tạo ra một câu trả lời - ví dụ:bạn có thể thu thập bản ghi "Khách hàng" và tất cả các bản ghi "Địa chỉ" và "Liên hệ" được liên kết sau đó trả về kết quả trong một đối tượng JSON đẹp cho thiết bị Android có thể tiêu tốn, tiết kiệm nhiều chuyến đi vòng quanh mạng chậm và không đáng tin cậy.

Bất kể bạn sử dụng gì, hãy đảm bảo thực hiện các lệnh gọi dịch vụ web của bạn trong một chuỗi nhân viên nền và không chặn giao diện người dùng. Hãy chuẩn bị cho thời gian chờ và lỗi cũng như nhu cầu thử lại. Kiểm tra ứng dụng của bạn bằng cách mô phỏng tình trạng mất kết nối không liên tục, độ trễ cao và tỷ lệ mất gói cao và đảm bảo rằng ứng dụng vẫn có thể sử dụng được.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để tôi có được khoảng cách giữa hai điểm trên Trái đất từ ​​PostGIS?

  2. Chuỗi có khóa chính tổng hợp

  3. Sắp xếp tự nhiên hỗ trợ các số lớn

  4. Các hàm PL / pgSQL:Cách trả về một bảng bình thường có nhiều cột bằng cách sử dụng câu lệnh thực thi

  5. rails postgres LỖI:cú pháp nhập không hợp lệ cho loại chính xác kép