Bạn có chủ động nghĩ về bảo mật khi mã hóa?


9

Khi bạn đang mã hóa, bạn có chủ động nghĩ về mã của mình có thể bị khai thác theo cách mà trước đây nó không có nghĩa là làm và do đó có được quyền truy cập vào thông tin được bảo vệ, chạy lệnh hoặc những thứ khác mà bạn không muốn người dùng của mình làm không?


Khi mã hóa cái gì? Tôi làm rất nhiều thứ khác nhau.
David Thornley

9
Vâng thường xuyên. Thông thường trong các cụm từ tương tự như "chết tiệt, tôi không có thời gian, tôi hy vọng không ai sẽ tìm ra".
liori

Câu trả lời:


10

Loại. Tuyên bố miễn trừ trách nhiệm: Tôi là người bảo mật;)

Vì vậy, cách tôi làm việc là tôi có mô hình mối đe dọa của mình, mô tả loại tấn công nào của loại kẻ tấn công nào có khả năng. Điều đó giúp làm việc ra các yêu cầu bảo mật. Khi tôi thực sự mã hóa, tôi thực hiện các thực hành "mã hóa an toàn" thông thường như cẩn thận rằng các biến con trỏ luôn nằm trong giới hạn, đầu vào bị nhiễm bẩn được khử trùng, các điều kiện lỗi được xử lý. Sau đó, tôi quay lại mô hình mối đe dọa của mình để xem mô-đun nào có khả năng bị kẻ tấn công nhắm mục tiêu nhất; những người nhận được một số đánh giá thêm.


4

Tôi sử dụng các thực hành tiêu chuẩn công nghiệp, như sử dụng các tham số SQL. Tôi sử dụng các nền tảng "an toàn", như .NET Framework và tận dụng các tính năng bảo mật như mã thông báo chống giả mạo trong ASP.NET MVC. Tôi không viết các thuật toán mã hóa của riêng mình, nhưng tôi hiểu những gì các mã hóa đó cung cấp theo cách mang lại lợi ích bảo mật và khi tôi cần sử dụng chúng để có được những lợi ích bảo mật đó.

Nói tóm lại, tôi sử dụng các thực tiễn tốt nhất, nhưng tôi không phát triển các công cụ bảo mật của riêng mình. Tôi không phải là một chuyên gia bảo mật trong vấn đề đó; Tôi dựa vào các chuyên gia bảo mật khác, những người có lẽ đã suy nghĩ sâu sắc về những vấn đề này và hiểu rõ về các rủi ro và lợi ích.

Cách tiếp cận cơ bản của tôi đối với bảo mật, ngoài việc đơn giản là sử dụng các công cụ bảo mật, là loại bỏ tất cả các đầu vào có thể có cho hệ thống ngoại trừ điều mà tôi đang mong đợi. Nếu tôi có trường số an sinh xã hội, các ký tự duy nhất thực sự hiển thị là chữ số và dấu gạch ngang, trong một mẫu cụ thể.

Tôi xác nhận đầu vào của người dùng trên cả máy khách và máy chủ.


Tôi đồng ý với việc sử dụng các tính năng bảo mật sẵn có, nhưng chắc chắn bạn phải suy nghĩ về việc sử dụng chúng khi nào và như thế nào là phù hợp. Tôi phải nói rằng tôi lo lắng về việc dựa vào người khác để nghĩ về bảo mật cho sản phẩm của bạn. Họ đã không làm điều đó.
Michael Shaw

@Ptolemy: Khi không phù hợp để tham số hóa câu lệnh SQL? Khi nào thì không thích hợp để sử dụng mã thông báo chống giả mạo? Nếu dữ liệu nhạy cảm, khi nào thì không phù hợp để sử dụng mã hóa?
Robert Harvey

Hãy xem xét mã hóa trong giây lát. Câu hỏi đầu tiên, bạn sử dụng mã hóa nào? sử dụng mã hóa kém mang lại cảm giác an toàn sai lầm. Tại một số điểm bạn phải giải mã dữ liệu. Tại thời điểm nào bạn làm điều này, những rủi ro cho việc này là gì so với sự phức tạp của mã. Mã hóa thực sự mang lại sự bảo vệ nào cho bạn? Mã dll byte của bạn được mã hóa hay khóa mã hóa có thể được đọc từ DLL của bạn không? đó là lý do tại sao, chỉ sử dụng các tính năng với ít hoặc không hiểu là nguy hiểm.
Michael Shaw

@Ptolemy: Nếu đó là ý của bạn khi nghĩ về bảo mật, thì tôi đồng ý, bạn thực sự phải biết những điều này để sử dụng những công cụ này đúng cách.
Robert Harvey

3

Chắc chắn rồi.

An ninh là tất cả. Và với phần mềm số, điều đó đi hai lần.
Mới hôm nọ, một người dùng đã tìm và khai thác lỗi trong một trong những chương trình cũ của tôi. Các thiệt hại là không thể khắc phục. Xem bên dưới:

văn bản thay thế

Nó từng là tròn.


7
Điều này cần giải thích thêm :)
Toby Allen


2

Không, bởi vì tôi không làm việc trong một miền có vấn đề về bảo mật có liên quan (trực quan hóa dữ liệu lớn SW). Tôi làm có một loạt các khẳng định trong mã của tôi (kiểm tra chỉ số, kiểm tra tính nhất quán, vv), không phải vì lo ngại an ninh, nhưng vì tôi như sai mã sụp đổ sớm và sụp đổ rõ ràng.


1

Chắc chắn rồi. Tôi nghĩ về các lỗ hổng tiêm chích, và cả logic kinh doanh của tôi sẽ hoạt động như thế nào trong môi trường máy tính để bàn so với môi trường web và cách bảo mật được thực hiện trong cả hai loại môi trường.


1

Tôi không phải là chuyên gia bảo mật, nhưng khi tôi mã hóa các ứng dụng web, tôi luôn cho rằng đầu vào của người dùng có thể chứa tất cả các loại kỳ lạ và phải luôn được thoát hoàn toàn và tương tự. Ngoài ra, tôi cẩn thận khi thực hiện các cuộc gọi Ajax trở lại máy chủ để kiểm tra xem người dùng đã đăng nhập chưa (nếu họ cần cho sự kiện cụ thể đó) và họ có quyền làm bất cứ điều gì họ đang cố gắng làm.

Các cơ sở mã có một bộ các bộ lọc cho đầu vào. Tôi không bao giờ kiểm tra trực tiếp $_GEThoặc $_POSTmảng của PHP . Thay vào đó, tôi truy vấn chúng thông qua một chức năng Request::get('parameter', 'filter')với các bộ lọc như int, textvà một vài người khác. (Và Request::post()đối với đầu vào POST, tất nhiên.)


1

Đúng. Khi tôi làm việc trong một trò chơi nhiều người chơi, tất cả đều hoang tưởng về những khai thác và cách để gian lận. Gian lận có thể phá hủy hoàn toàn một trò chơi, chưa kể bất kỳ mô hình kinh doanh nào liên quan đến bán đồ trong trò chơi. Vì vậy, mối quan tâm an ninh và các biện pháp chống giả mạo là rất cao trong chương trình nghị sự. Tôi rất thích nó. Tôi đã làm việc cho các dự án khác trước khi bạn phải cảm thấy tội lỗi vì làm việc lâu hơn với mã chỉ để đảm bảo nó an toàn.


0

Đúng. Bảo mật là quan trọng và không nên suy nghĩ lại; việc thêm bảo mật sau khi thực tế thường khó hơn so với việc thiết kế nó vào ứng dụng ngay từ đầu và nếu bạn thêm nó sau này có thể bạn sẽ bỏ lỡ một số điều (hoặc hoàn toàn không bận tâm thêm nó vào).


0

Hiểu các nguyên tắc chung về bảo mật, (tính toàn vẹn, xác thực, quyền hạn) và sau đó đọc một vài cuốn sách về cách mọi người đã lật đổ các trụ cột bảo mật này trong nhiều thiên niên kỷ và bạn sẽ đi được nửa đường.

Sau đó đọc một vài cuốn sách hay về chiến lược thiết kế và thử nghiệm và bạn sẽ học cách thiết kế khả năng kiểm tra vào kiến ​​trúc của mình.

Bây giờ chúng ta đến điểm khi tôi nghĩ về bảo mật. Tôi đang suy nghĩ về cách tôi có thể xác thực nguồn dữ liệu, có vấn đề gì không nếu dữ liệu bị giả mạo, nguồn dữ liệu là ai, tôi chắc chắn về điều đó như thế nào? làm thế nào nó có thể bị thay đổi, v.v ...

Điều này ảnh hưởng đến thiết kế. Các tệp cấu hình có thể được mã hóa các phần chính hoặc các trường cụ thể có thể ở dạng văn bản rõ ràng với trường chữ ký được liên kết. Mọi thứ trở nên phức tạp hơn với các dịch vụ phải đối mặt với internet vì bạn sẽ mong đợi mức độ thù địch lớn hơn ở đó.

Sau đó, tại thử nghiệm, làm thế nào để bạn kiểm tra tất cả điều này. Mục nhập dữ liệu tối đa của bạn là gì, điều gì xảy ra nếu bạn đẩy phần mềm vượt quá các giới hạn đó, làm thế nào để xử lý nó? Nó tin tưởng cái gì? Làm thế nào bạn có thể giả mạo niềm tin đó?


0

Đúng.

Tôi đã từng đối phó với đủ tin tặc trong quá khứ để biết rằng họ liên tục cố gắng thỏa hiệp bất kỳ trang web lớn nào và có đủ bot ngoài đó ngay cả các trang web nhỏ không an toàn.

Tôi cố gắng nghĩ giống như một hacker mọi lúc, đến mức đôi khi tôi lo lắng cho đồng nghiệp của mình với những bình luận ngẫu nhiên về cách các hệ thống mà chúng ta được cấp mỗi ngày có thể được chơi.


0

Nó phải là thứ mà bất kỳ nhà phát triển nào xây dựng trong quá trình từ mức độ lớn hơn hoặc thấp hơn, tùy thuộc vào ứng dụng, v.v. Thật không may, vì các nhà phát triển không có xu hướng trích dẫn để bảo mật, người mua không có xu hướng nghĩ về nó ( Tôi biết, đây là một chút hấp dẫn, bởi vì nếu người mua muốn báo giá rẻ nhất, nó có thể sẽ không bao gồm bảo mật)

Là một nhà phát triển, bạn có thể đạt được lợi thế nhất định nếu bạn có kỹ năng trong lĩnh vực này - tôi đặc biệt nghĩ về ngân hàng và dịch vụ tài chính, nhưng các ngành khác cũng được áp dụng. Hiện tại họ có thể ngân sách 70 - 100k để đào tạo cho một sinh viên mới tốt nghiệp được tăng tốc về các quy trình, bảo mật và các chi tiết cụ thể khác cho tổ chức đó. Nếu bạn có thể tiết kiệm cho họ 30 nghìn trong số đó, đó là một CV tốt!

Tại Vương quốc Anh, Viện Chuyên gia An toàn Thông tin và tại Scotland, Trung tâm Xuất sắc về An ninh và Tội phạm mạng đang hợp tác chặt chẽ với các trường Đại học để giúp xem xét các tài liệu khóa học, cung cấp cho khách các bài giảng về ý nghĩa thực tế của mã hóa kém và tạo điều kiện cho các vị trí mùa hè (ví dụ Các nhà phát triển phần mềm đặt vào các bộ phận gian lận trong thực thi pháp luật.) Hầu hết các tổ chức hỗ trợ đang làm điều này miễn phí, vì nó có khả năng tiết kiệm cho họ một số tiền lớn - nghe có vẻ đáng giá đối với tôi.

(từ chối trách nhiệm - Tôi đã là người bảo mật cho các tổ chức toàn cầu khác nhau)

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.