Tại sao không để lộ khóa chính


53

Trong giáo dục của tôi, tôi đã nói rằng việc để lộ các khóa chính thực tế (không chỉ các khóa DB, mà tất cả các trình truy cập chính) cho người dùng là một ý tưởng thiếu sót.

Tôi luôn nghĩ đó là một vấn đề bảo mật (vì kẻ tấn công có thể cố đọc những thứ không phải của họ).

Bây giờ tôi phải kiểm tra xem người dùng có được phép truy cập không, vậy có lý do nào khác đằng sau nó không?

Ngoài ra, vì người dùng của tôi phải truy cập dữ liệu dù sao tôi cũng cần có khóa công khai cho thế giới bên ngoài ở đâu đó ở giữa. Bây giờ khóa công khai có cùng vấn đề với khóa chính, phải không?


Đã có yêu cầu của một ví dụ về lý do tại sao làm điều đó, vì vậy đây là một. Hãy nhớ rằng câu hỏi có nghĩa là về chính nguyên tắc không chỉ nếu nó được áp dụng trong ví dụ này. Câu trả lời giải quyết các tình huống khác được chào đón rõ ràng.

Ứng dụng (Web, Di động) xử lý hoạt động, có nhiều UI và ít nhất một API tự động để liên lạc với hệ thống giao tiếp (eG bộ phận kế toán muốn biết khách hàng phải trả bao nhiêu tiền dựa trên những gì đã làm). Ứng dụng có nhiều khách hàng nên việc tách dữ liệu của họ (về mặt logic, dữ liệu được lưu trữ trong cùng một DB) là điều bắt buộc của hệ thống. Mỗi yêu cầu sẽ được kiểm tra tính hợp lệ bất kể điều gì.

Hoạt động có dạng hạt rất mịn nên nó nằm cùng nhau trong một số đối tượng chứa, hãy gọi nó là "Nhiệm vụ".

Ba usecase:

  1. Người dùng A muốn gửi Người dùng B đến một số Tác vụ để anh ta gửi cho anh ta một liên kết (HTTP) để thực hiện một số Hoạt động ở đó.
  2. Người dùng B phải ra ngoài tòa nhà để anh ta mở Nhiệm vụ trên thiết bị di động của mình.
  3. Kế toán muốn tính phí khách hàng cho Nhiệm vụ, nhưng sử dụng hệ thống kế toán của bên thứ ba tự động tải Nhiệm vụ / Hoạt động theo một số mã đề cập đến REST - API của Ứng dụng

Mỗi usecase yêu cầu (hoặc trở nên dễ dàng hơn nếu) tác nhân phải có một số định danh địa chỉ cho Nhiệm vụ và Hoạt động.


3
có liên quan: Có nên sử dụng khóa thay thế cho người dùng không? "Bạn cần sẵn sàng cho bất kỳ số nhận dạng nào tiếp xúc với người dùng / khách hàng cần phải thay đổi và thay đổi danh tính của một hàng trong cơ sở dữ liệu và tuyên truyền thay đổi đó cho tất cả các khóa ngoại chỉ là yêu cầu phá vỡ dữ liệu ..."
gnat

@gnat ON UPDATE CASCADEđược tạo ra cho điều đó (cụ thể là mysql?), mặc dù nếu vấn đề là bảo mật thì việc kiểm tra truy cập phải ở phần phụ trợ và dù sao cũng không tin tưởng người dùng
Izkata

2
@Izkata Vâng, ngoại trừ khi bạn tham chiếu chúng trong kho dữ liệu khác (UserID trong LDAP làm ví dụ đơn giản) hoặc bạn cần phải khôi phục một số dữ liệu từ bản sao lưu. gnat có một điểm tốt đó.
Fuchs Angelo

Bạn có thể pelase chi tiết về những gì bạn có ý nghĩa với "phơi bày"? Một ví dụ thực tế có thể giúp đỡ. :-)
CodeCaster

"phơi bày" có nghĩa là hiển thị nó cho người dùng. (Theo người dùng, ý tôi là chủ yếu là con người, nhưng câu hỏi có vẻ hợp lệ đối với máy móc)
Angelo Fuchs

Câu trả lời:


38

Ngoài ra, vì người dùng của tôi phải truy cập dữ liệu dù sao tôi cũng cần có khóa công khai cho thế giới bên ngoài ở đâu đó ở giữa.

Chính xác. Lấy HTTP không trạng thái, người khác sẽ không biết nên yêu cầu tài nguyên nào: nó hiển thị ID câu hỏi của bạn 218306trong URL. Có lẽ bạn đang thực sự tự hỏi liệu một định danh tiếp xúc có thể dự đoán được ?

Những nơi duy nhất tôi nghe thấy câu trả lời tiêu cực cho điều đó, đã sử dụng lý do: "Nhưng họ có thể thay đổi ID trong URL!" . Vì vậy, họ đã sử dụng GUID thay vì thực hiện ủy quyền thích hợp.

Tôi có thể tưởng tượng một tình huống mà bạn không muốn định danh của mình có thể dự đoán được: thu hoạch tài nguyên. Nếu bạn có một trang web mà công khai tổ chức các nguồn lực nhất định những người khác có thể thú vị trong, và bạn lưu trữ chúng thích /images/n.jpghoặc /videos/n.mp4nơi nchỉ là một số incrementing, bất cứ ai nhìn vào giao thông đến và đi từ trang web của bạn có thể thu hoạch tất cả các nguồn lực của bạn.

Vì vậy, để trả lời trực tiếp câu hỏi của bạn: không, không có gì xấu khi trực tiếp "phơi bày" các định danh chỉ có ý nghĩa đối với chương trình của bạn, thông thường nó thậm chí còn được yêu cầu để chương trình của bạn hoạt động.


2
Các url không thể truy cập (ví dụ: chứa mã thông báo 128 bit ngẫu nhiên bằng mật mã) là một hình thức ủy quyền thích hợp.
CodeInChaos

Đúng như trong cực kỳ nhạy cảm để phát lại các cuộc tấn công? Thật tuyệt khi sử dụng một lần như URL đặt lại mật khẩu, nhưng ít hơn để xác định tài nguyên tĩnh, vì một khi mã thông báo được mở, bất kỳ ai cũng có thể sử dụng nó, mà bạn không thể thay đổi nó mà không phá vỡ bất kỳ tham chiếu hợp pháp nào nó
CodeCaster

hm Rõ ràng là nó yêu cầu SSL, nhưng đó là trường hợp cho dù bạn xác thực và ủy quyền như thế nào. Qua SSL, kẻ tấn công không thể học mã thông báo (giống như họ không thể học cookie) và nó cũng ngăn chặn các cuộc tấn công phát lại. Nhược điểm chính của phương pháp này là bạn không thể thu hồi quyền truy cập cho từng người dùng, vì vậy tôi chỉ thích sử dụng nó cho các tài nguyên không thay đổi. Thu hồi quyền truy cập vào tài nguyên bất biến là vô nghĩa vì kẻ tấn công có thể chỉ cần lưu trữ một bản sao cục bộ.
CodeInChaos

2
Tôi dường như không có khả năng trong những ngày thực sự bày tỏ những gì tôi muốn nói, tôi xin lỗi. Ý tôi là sử dụng mã thông báo ngẫu nhiên cho tài nguyên tĩnh trái ngược với ID gia tăng là ổn, nếu bạn muốn tài nguyên có thể truy cập công khai nhưng không thể đoán được. Đối với bất kỳ mục đích sử dụng nào khác mặc dù tôi thích sử dụng một lần, vì điều thu hồi.
CodeCaster

1
Không, quan điểm của tôi chính xác. Có lẽ bạn có thể giải thích những gì bạn có ý nghĩa với "phơi bày" sau đó?
CodeCaster

29

Bạn không nên phơi bày vì những người nhìn thấy nó sẽ bắt đầu sử dụng nó làm 'số tài khoản' của họ mà KHÔNG phải vậy. Ví dụ, đối với tài khoản ngân hàng của tôi, tôi biết số tài khoản của mình là gì. Tôi đã ghi nhớ nó, tôi sử dụng nó trên điện thoại với dịch vụ khách hàng, tôi sử dụng nó khi điền vào các biểu mẫu cho các ngân hàng khác để thực hiện chuyển khoản, cho các tài liệu pháp lý, cho dịch vụ thanh toán tự động của mình, v.v. nó để thay đổi. Mặt khác, khóa chính (đối với tài khoản của tôi), tôi không biết hoặc chưa từng thấy.
Hệ thống lưu trữ hệ thống thay đổi qua nhiều năm từ hệ thống này sang hệ thống khác, thông qua sáp nhập ngân hàng, nâng cấp và thay thế hệ thống, v.v.
Các khóa chính có thể thay đổi thông qua một số chuyển đổi này, vì vậy nếu nó không bao giờ bị lộ, ghi hoặc ghi nhớ bởi bất kỳ người dùng thông thường nào '
Các khóa không có ý nghĩa kinh doanh thường được gọi là khóa thay thế và thường (nhưng không phải luôn luôn) được sử dụng làm khóa chính.

Tuy nhiên, điều này thậm chí xảy ra trong nội bộ khi mọi người xây dựng các giao diện và chương trình sử dụng sai và lộ các khóa chính và biến chúng thành một phần của các hệ thống đó thay vì chúng chỉ làm một việc - xác định duy nhất một bản ghi cơ sở dữ liệu trong nội bộ. Tôi thực sự đã học được những điều trên thông qua 6 năm hỗ trợ hệ thống kho dữ liệu trong bệnh viện.


4
+1 nhưng những gì bạn đang mô tả ở đây thực sự là một khóa thay thế . Không phải mọi bảng đều có khóa thay thế và ngay cả khi nó thay thế có thể không phải là khóa "chính".
nvogel

2
+1 Tôi nghĩ số tài khoản sẽ là khóa thay thế nhưng tôi đã đọc nó và bạn đúng 100% :)
Michael Durrant

2
+1 hiển thị nó cho người dùng thêm các yêu cầu ngầm định (ví dụ: duy trì trạng thái tĩnh)
Matt

1
Câu trả lời chính xác. Cách viết tắt của tôi để nói điều này là các khóa thay thế rất hữu ích vì không ai quan tâm đến chúng và do đó không ai quan tâm nếu bạn thay đổi chúng hoặc không thay đổi chúng. Nếu bạn phơi bày chúng, mọi người sẽ bắt đầu quan tâm đến chúng.
JimmyJames

tl; dr: vì tương lai. Nếu một cái gì đó bên ngoài dựa vào một khóa, mọi thứ trở nên lộn xộn nếu việc triển khai thay đổi sau này; vì vậy hãy giữ chúng ít nhiều ẩn để làm cho mọi thứ dễ dàng hơn.
Adam Tolley

27

Bởi vì Khóa chính là một chi tiết thực hiện.

Nếu bạn di chuyển cơ sở dữ liệu, các khóa chính của bạn có thể thay đổi do thứ tự chèn, xóa các bản ghi cũ ... một vài lý do khác nhau. Nếu bạn di chuyển nền tảng cơ sở dữ liệu, bạn có thể không còn có khóa chính thực sự nữa. Phơi bày PK phía trên lớp truy cập dữ liệu là một sự trừu tượng bị rò rỉ, với tất cả các mối quan tâm khớp nối đòi hỏi.


3
Làm thế nào một lớp ứng dụng sẽ xác định duy nhất một tài nguyên mà nó muốn lấy từ hoặc cập nhật trong lớp dữ liệu mà không có khóa chính?
CodeCaster

2
@CodeCaster - bởi một số bộ dữ liệu được lập chỉ mục duy nhất hoặc bởi một khóa chính không công khai được trả về như một phần của đối tượng được cung cấp bởi lớp truy cập dữ liệu.
Telastyn

1
@CodeCaster - Có rất nhiều cách để tạo mã thông báo cho phép gọi lại để chỉ định thao tác nào đang được thực hiện và chắc chắn không phải tất cả chúng đều vượt qua khóa chính.
Telastyn

2
Nhưng điều đó đòi hỏi lớp dữ liệu phải biết mã thông báo thuộc về (hoặc dịch sang) PK nào. Đối với tôi nghe có vẻ như là một lớp phức tạp không cần thiết thêm vào, chỉ đơn thuần là để che giấu PK. Mục đích nào phục vụ, ngoài việc làm hài lòng kiến ​​trúc sư? Tôi đồng ý với quan điểm của bạn, tôi chỉ không thấy nó có thể áp dụng trong sử dụng trong thế giới thực và sẽ đánh giá cao một ví dụ thực tế.
CodeCaster

1
@CodeCaster - Không, tầng trung thực sự thực hiện công việc của mình và tóm tắt rằng có tất cả quyền truy cập dữ liệu từ UI. Có rất nhiều kiến ​​trúc sư tồi trên thế giới, nhưng nhiều thực tiễn tốt nhất của thiết kế chương trình tồn tại là có lý do. Một số ứng dụng có thể gặp rủi ro về sự trừu tượng bị rò rỉ đó và một số thì không thể.
Telastyn

10

Đây là một câu trả lời kết hợp của những người khác (aka. Những gì tôi đã học được). Nếu bạn cảm thấy muốn nâng cấp cái này, ít nhất bạn nên nâng cấp một trong những cái khác cũng như chúng đã làm công việc thực tế. Nếu bạn quan tâm hơn, thay vào đó hãy đọc các câu trả lời khác.

Bạn không nên để lộ khóa chính của cơ sở dữ liệu mà thay vào đó hãy sử dụng khóa thay thế

  1. Nếu bạn muốn người dùng của bạn có thể nhớ (ít nhất một chút) hoặc nhận ra định danh của một mục. ( Trả lời của Graystone28s )
  2. Nếu bạn muốn lập kế hoạch trước và xem xét rằng bạn có thể thay đổi hệ thống (Cơ sở dữ liệu hoặc cách khác) có thể sẽ thay đổi PK của bạn. ( Trả lời Telastyns )
  3. Nếu bạn muốn đảm bảo người dùng của bạn có cách truy cập dữ liệu nhất quán sẽ không thay đổi ngay cả khi công ty của bạn chuyển quyền sở hữu và dữ liệu được chuyển sang một hệ thống hoàn toàn khác. ( Michael Durrant trả lời )
  4. Nếu PK của bạn có thể dự đoán được (như một chuỗi), hệ thống của bạn có thể gặp sự cố thu hoạch tài nguyên. ( Trả lời CodeCasters ) Điều này chỉ áp dụng nếu hệ thống của bạn có thông tin đáng để thu hoạch và có thể truy cập được bởi bất kỳ ai hoặc ít nhất là ai đó có lợi ích thu hoạch.

Lưu ý: Khóa được tạo của bạn phải là (loại) con người dễ hiểu ( Trả lời Sqlvogels ).

Nếu hệ thống của bạn không có nhu cầu từ 1. đến 4. thì không có lý do gì để không sử dụng PK cơ sở dữ liệu làm định danh công khai của bạn (một số câu trả lời). Ngoài ra bảo mật không phải là một vấn đề ở đây (một số câu trả lời).


8

Một lý do tôi đã tìm thấy, trong thời gian đầy đủ mà tôi thấy người dùng cuối yêu cầu rằng số nhận dạng của họ có nghĩa là một cái gì đó (như có tiền tố hoặc chỉ báo của năm mà nó bị chặn). Thay đổi PK là khó, nhưng thay thế dễ dàng hơn nhiều.

Khóa chính của bạn có thể sẽ là thứ bạn muốn lập chỉ mục cơ sở dữ liệu của mình vì lý do hiệu suất và bạn có thể kịp thời vì lý do kỹ thuật thay đổi ví dụ từ số sang hướng dẫn ... bạn không biết lý do công nghệ mới hoặc kiến ​​thức có thể hướng dẫn bạn xuống. Pk của bạn là mục dữ liệu kỹ thuật của bạn, khóa chung dành cho người dùng cuối.


7
Câu hỏi là: "Có phải là xấu khi để lộ các khóa chính?" . Câu trả lời của bạn: "Người dùng có thể muốn có số nhận dạng riêng" . Tôi không có được mối quan hệ. Tôi trưng ra InvoiceNumber, có ý nghĩa và có thể thay đổi bởi khách hàng, nhưng tôi cũng phơi bày InvoiceID, mã mà tôi sử dụng để xác định duy nhất hóa đơn. Bạn không phải (và thường xuyên không muốn ) để khóa người dùng là khóa lưu trữ. Câu hỏi này là về sau.
CodeCaster

Tôi nghĩ đây là một ví dụ hay bởi vì nếu bạn chuyển sang phiên bản APP của nhiều người thuê, bạn có thể giữ cùng một cú pháp và có nhiều hóa đơn giống nhau InvoiceNumber(cho những người thuê khác nhau) nhưng có các khóa chính khác nhau - một điểm (loại ) cũng đề cập trong câu trả lời.
tái hiện

1
@CodeCaster câu hỏi này thực sự là về "tại sao bạn không muốn chúng giống nhau"?
Fuchs Angelo

Trong trường hợp đó, xem câu trả lời của Telastyns .
CodeCaster

2

Đối với hầu hết các ứng dụng, điều khá quan trọng là bạn KHÔNG để lộ khóa cho người dùng. Để sử dụng một hệ thống thông tin một cách hiệu quả, người dùng của hệ thống đó thường sẽ cần một cách để xác định thông tin bên trong nó và liên kết thông tin đó với một cái gì đó trên thế giới bên ngoài cơ sở dữ liệu. Trong thuật ngữ cơ sở dữ liệu quan hệ, những định danh là khóa.

Một mẫu thiết kế được sử dụng tốt là tạo ra một khóa "kỹ thuật" bổ sung, hoàn toàn cho các bảng cơ sở dữ liệu như một phương tiện trừu tượng. Ví dụ: để cung cấp khóa ổn định (tương đối không thay đổi) trong đó một số khóa thay thế có thể thay đổi. Các khóa kỹ thuật như vậy thường không được tiếp xúc với người dùng cuối vì làm như vậy sẽ làm suy yếu sự trừu tượng hóa dự định khỏi yêu cầu của người dùng. Nó không có gì để làm với an ninh.

Vấn đề / hiểu lầm tiềm ẩn trong câu hỏi của bạn là do sử dụng không phù hợp thời hạn chính chủ chốt. Khóa chính chỉ là một trong số một số khóa "ứng cử viên" (một số định danh có thể có trong bảng cơ sở dữ liệu). Khóa chính không nhất thiết yêu cầu bất kỳ thuộc tính khác biệt cơ bản nào với bất kỳ khóa nào khác, vì vậy các xác nhận và nguyên tắc thiết kế áp dụng cụ thể cho khóa chính và không áp dụng cho các khóa khác luôn bị nghi ngờ và thường sai.

Cho rằng bạn thường sẽ cần để lộ một khóa cho người dùng của mình, khóa đó nên là gì? Cố gắng làm cho các phím của bạn trở nên quen thuộc, đơn giản và ổn định. Sự quen thuộc và đơn giản làm cho các phím dễ đọc và ghi nhớ và sẽ giúp tránh các lỗi nhập dữ liệu. Ổn định có nghĩa là các thay đổi quan trọng không thường xuyên cũng giúp tránh khả năng xác định sai.


1
nó phụ thuộc vào cái gì? Tôi muốn tìm hiểu những lý do đằng sau khái niệm chung chung đó để biết khi nào nên áp dụng nó và khi nào không.
Fuchs Angelo

1
Xin chào khách hàng, xin vui lòng cho tôi id của bạn để tôi có thể giúp bạn. Chắc chắn, gfds789gxb3456bgfx789fgh98076hytd6734nhg5678nghf875nhgf456 của nó. Hmm, xã hội của bạn thì sao? ... id thay thế
Michael Durrant

@Michael, Trả lời cập nhật. Đó có phải là một chìa khóa quen thuộc, đơn giản và ổn định?
nvogel

1

Đây là từ một nhận xét về câu trả lời của Greystone28 bởi CodeCaster. Đây là một ví dụ về những gì bạn đang nói:

Tôi trưng ra InvoiceNumber, có ý nghĩa và có thể thay đổi bởi khách hàng, nhưng tôi cũng tiết lộ InvoiceID, mã mà tôi sử dụng để xác định duy nhất hóa đơn. Bạn không phải (và thường xuyên không muốn) để khóa người dùng là khóa lưu trữ. Câu hỏi này là về sau.

Mục đích nào trong ứng dụng của bạn khi cấp bằng InvoiceID phục vụ?

Bằng cách phơi bày, tôi cho rằng bạn có nghĩa là người dùng có thể nhìn thấy nó. Chỉ hiển thị nó nếu người dùng cần nó để sử dụng ứng dụng của bạn. Nó có thể được sử dụng bởi hỗ trợ kỹ thuật hoặc một số công cụ hành chính. Tôi đã làm việc với một vài ứng dụng làm việc này. Nó làm cho nó dễ dàng hơn để cung cấp hỗ trợ khi tôi biết hồ sơ cụ thể trong câu hỏi.


Hóa đơn có số nhận dạng tự nhiên (số) nhưng chỉ dành cho những người bạn viết. Những gì bạn nhận được? Họ có InvoiceNumbers nhưng họ trùng nhau (vì hai công ty sử dụng cùng một và cả hai đều gửi cho bạn một hóa đơn). Trong trường hợp này, InvoiceID của bạn là duy nhất, Số không phải và số duy nhất sẽ là Tên người dùng không phải là định danh tốt cho dữ liệu (quá dài, thay đổi quá thường xuyên, có thể chứa các ký tự tối nghĩa ...)
Angelo Fuchs

@AngeloNeuschitzer - Nếu người dùng có thể xác định duy nhất một hóa đơn theo tên và số của Khách hàng, người dùng không cần PK InvoiceID, nhưng cơ sở dữ liệu và mã cơ sở có thể sử dụng nó. Chúng là các chức năng loại trừ lẫn nhau.
JeffO

Xem trường hợp 1 - 3 của ví dụ của tôi. Trong mọi trường hợp, Tên khách hàng là một cách hữu ích để giải quyết Đối tượng đó cho Người dùng (có thể là con người hoặc máy). PK hóa đơn là.
Fuchs Angelo

1

Điều đó hoàn toàn bình thường đối với các thực thể có một định danh duy nhất được tiếp xúc với thế giới bên ngoài. Đối với một số đối tượng, có thể tìm thấy một mã định danh thực sự có ý nghĩa (ví dụ số hóa đơn) nhưng đối với các đối tượng khác không tồn tại và do đó nó phải được tạo.

Vì mục đích nhất quán và dễ đọc, tôi thấy đó là một cách thực hành tốt cho tất cả các thực thể trong một hệ thống sử dụng cùng loại và tên chính xác cho mã định danh của chúng. Thông thường định danh này sẽ được hiển thị ( <type> getId()) trong một số lớp cơ sở trừu tượng.

Vì lý do tương tự, mỗi dịch vụ trong hệ thống (ví dụ: dịch vụ hóa đơn) nên cung cấp các phương thức giống hệt nhau để truy cập các thực thể bằng mã định danh của chúng. Thông thường phương thức này ( findById(<type> id)) sẽ được kế thừa từ giao diện dịch vụ chung hoặc lớp cơ sở.

Mã định danh này không phải là khóa chính của thực thể nhưng nó có thể là một khóa. Điều duy nhất người ta phải đảm bảo là chiến lược tạo khóa tạo ra các mã định danh duy nhất hợp lý (không cần thiết duy nhất trên toàn cầu nhưng ít nhất là trong hệ thống).

Nếu hệ thống sau đó được di chuyển (lớn nếu theo kinh nghiệm của tôi) sang cơ sở dữ liệu khác thì việc sử dụng một chiến lược khác (không dựa trên các khóa chính) để tạo ra các định danh miễn là chiến lược tương thích với cơ sở dữ liệu ban đầu.


Bạn có thể giải thích những gì trong câu trả lời của bạn đã không được trả lời trong những người khác?
Fuchs Angelo

2
Trong câu trả lời của tôi, tôi không đồng ý với điểm 2. và 3. tóm tắt của bạn. Tôi không nghĩ đây là những lý do hợp lệ của việc không sử dụng PK làm định danh đối tượng.
Muton

0

Khóa chính là ở đó, giống như một tay cầm cho bộ dữ liệu (bản ghi, hàng) mà bạn cố gắng truy cập với tư cách là nhà phát triển. Nó cũng được sử dụng trong tính toàn vẹn tham chiếu (ràng buộc khóa ngoài) và có thể nó cũng có một hoặc nhiều trường hợp sử dụng.

Về cơ bản, không có gì xấu khi phơi bày nó cho người dùng, hoặc thậm chí là tin tặc. Bởi vì tôi không biết về một cuộc tấn công sử dụng khóa chính chẳng hạn.

Nhưng trong bảo mật, chúng tôi có nhiều nguyên tắc (chúng tôi chấp nhận và không chấp thuận) và chúng tôi cần tuân thủ chúng:

  1. Nguyên tắc cho thuê đặc quyền
  2. An ninh thông qua sự tối tăm

Và một số nguyên tắc khác. Những gì họ nói về cơ bản là:

Nếu bạn không cần phải tiết lộ dữ liệu của mình, tại sao bạn lại như vậy?


Phần xử lý là nơi tôi đồng ý. An ninh thì không. Nó thể liên quan đến bảo mật, nhưng có một khóa nội bộ độc lập mà người dùng không nhìn thấy được thì hầu như không thực sự về bảo mật. Tôi sẽ gọi đó là một hiệu ứng phụ tốt đẹp.
JensG

Tại sao bạn: xem ví dụ tôi thêm vào câu hỏi.
Fuchs Angelo
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.