Как защитить пользовательские данные в базе данных с направляющими?

Если бы проект является столь маленьким, что он содержался бы в одном классе и не будет используемым очень долго, я рассмотрел бы использование функций. Кроме того, если язык, который Вы используете, не поддерживает OO (например, c).

13
задан Jeremy Mack 28 October 2009 в 02:37
поделиться

2 ответа

Проблема с шифрованием вашей базы данных заключается в том, что все, что вы зашифровываете, не может использоваться в запросе SQL, и, кроме того, это все еще должно быть расшифровывается, прежде чем его можно будет использовать. Это означает, что вам нужно разместить ключ дешифрования в непосредственной близости от базы данных, и в большинстве случаев, если кто-то может скомпрометировать вашу базу данных, это означает, что они также скомпрометировали ваш ключ дешифрования в то же время. Таким образом, этап шифрования принес вам очень мало. С паролями, расшифровка не требуется, потому что это фактически хэш-функция. Вам гораздо лучше убедиться, что база данных никогда не будет взломана.

Всегда предполагайте, что если хакер может поставить под угрозу какую-либо часть вашей безопасности, он может поставить под угрозу всю ее. Сеть настолько сильна, насколько сильна ее самое слабое звено и все такое.

Номера кредитных карт и номера социального страхования (которые, к счастью, обычно не нужно индексировать), вероятно, являются наиболее очевидным исключением из этого правила, но если вам придется Задайте этот вопрос, вам вообще не нужно хранить эти предметы. Есть всевозможные юридические проблемы, в которые вы можете попасть из-за того, что все испортили.

Всегда предполагайте, что если хакер может поставить под угрозу какую-либо часть вашей безопасности, он может поставить под угрозу всю ее. Цепочка настолько сильна, насколько сильна ее самое слабое звено и все такое.

Номера кредитных карт и номера социального страхования (которые, к счастью, обычно не нужно индексировать), вероятно, являются наиболее очевидным исключением из этого правила, но если вам придется Задайте этот вопрос, вам вообще не нужно хранить эти предметы. Есть всевозможные юридические проблемы, в которые вы можете попасть из-за того, что все испортили.

Всегда предполагайте, что если хакер может поставить под угрозу какую-либо часть вашей безопасности, он может поставить под угрозу всю ее. Цепочка настолько сильна, насколько сильна ее самое слабое звено и все такое.

Номера кредитных карт и номера социального страхования (которые, к счастью, обычно не нужно индексировать), вероятно, являются наиболее очевидным исключением из этого правила, но если вам придется Задайте этот вопрос, вам вообще не нужно хранить эти предметы. Есть всевозможные юридические проблемы, которые могут возникнуть из-за того, что все испортили.

но если вам нужно задать этот вопрос, вам вообще не нужно хранить эти предметы. Есть всевозможные юридические проблемы, в которые вы можете попасть из-за того, что все испортили.

но если вам нужно задать этот вопрос, вам вообще не нужно хранить эти предметы. Есть всевозможные юридические проблемы, в которые вы можете попасть из-за того, что все испортили.

13
ответ дан 1 December 2019 в 21:12
поделиться

Если бы я был игроком в гольф, я мог бы переписать ответ @ FM как:

($,,$\)=(' ',"\n");@_=@ARGV;open $_,$_ for @_;print
map{chomp($a=<$_>);$a} @_=grep{!eof $_} @_ while @_

который вы могли бы превратить в однострочник, но это просто злой. ; -)

Вот оно, до 100 символов:

C: \ Temp> perl -le "$, = ''; @ _ = @ ARGV ; откройте $ _, $ _ для @_; распечатать карту {chomp ($ a = <$ _>); $ a} @ _ = grep {! eof $ _} @_ while @_ "file1 file2

Если это нормально, чтобы хлебнуть (и почему, черт возьми, нет - мы ищем разные пути), я думаю, что я обнаружил путь безумия:

@_=@ARGV;chomp($x[$.-1]{$ARGV}=$_) && eof
and $.=0 while<>;print "@$_{@_}\n" for @x

C: \ Temp> perl -e "@ _ = @ ARGV

Я обнаружил, что в своих приложениях мне нравится добавлять незашифрованные _ **** читатели и писатели в свой класс, чтобы облегчить работу с зашифрованным представлением.

class User
  # has db column encrypted_cc_number
  def unencrypted_cc_number
    WhateverEncryptionClassYouUse.decrypt(encrypted_cc_number)
  end
  def unencrypted_cc_number=(val)
    self.encrypted_cc_number = WhateverEncryptionClassYouUse.encrypt(val)
  end
end
9
ответ дан 1 December 2019 в 21:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: