Что лучший способ состоит в том, чтобы отправить данным аутентификации веб-формы по HTTP?

Используйте форматирование строки

head = csv.reader(open('{}.csv'.format(sys.argv[1])))

или Python 3.6 или более поздней версии

head = csv.reader(open(f'{sys.argv[1]}.csv'))

6
задан Antti Haapala 24 July 2016 в 07:53
поделиться

9 ответов

+1 к ответу Mehrdad. Продолжение криптографии собственной разработки опасно.

Разговор на основе опыта здесь, видя уязвимости в клиентских решениях для шифрования собственной разработки. Большинство уязвимостей происходит из-за той же причины - передача данных была защищена шифрованием с секретным ключом, но самим ключом обменялись небезопасным способом.

TLS/SSL решает проблему не только безопасный ключевой обмен, но также и безопасной передачи данных.

TLS/SSL защищает Вашу уязвимую информацию при помощи асимметричной ключевой криптографии для обмена симметричным ключом, используемым для шифрования информации назад и вперед, после того как сессия TLS/SSL была установлена. Симметричный ключ сгенерирован во времени выполнения и является общим секретом между клиентом и сервером; именно этот ключ используется для шифрования всего другого трафика, после того как сессия готова к передаче данных.

Открытые и закрытые ключи сервера используются только для обмена этим общим секретом. Единственный известный способ поставить под угрозу общий ключ состоит в том, чтобы поставить под угрозу закрытый ключ сервера (так, чтобы секретный ключ мог затем быть дешифрован). В действительности это требует небрежности или преступного намерения со стороны администратора сервера.

Если Вы решение для шифрования самокрутки, необходимо обмениваться симметричным ключом безопасным способом. Самый легкий способ сделать так состоит в том, чтобы использовать TLS/SSL; более твердый путь состоит в том, чтобы реализовать Ваше собственное асимметричное ключевое обменное решение для криптографии.

3
ответ дан 8 December 2019 в 03:28
поделиться

Я настоятельно рекомендую против движения с Вашим собственным решением (в безопасности чувствительные среды). Пойдите с SSL. Это - доказанная технология, и легко реализовать.

Прокрутка Ваших собственных решений по обеспечению безопасности может быть действительно опасной и даже если она будет реализована правильно (шанс на 0,000001%), то это будет дорого.

12
ответ дан 8 December 2019 в 03:28
поделиться

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

время == деньги

Купите сертификат и проведите свое время, работая над Вашим приложением вместо безопасной формы входа в систему.

2
ответ дан 8 December 2019 в 03:28
поделиться

Хорошо, вот единственный ответ, в котором Вы нуждаетесь: Ваш БАНК только поддерживает вход в систему/автора через SSL. Если был лучший способ сделать это, они были бы.

1
ответ дан 8 December 2019 в 03:28
поделиться

HTTP только решения всегда будет восприимчив к атакам "человек посередине".

Править: Сетевая трассировка была бы простым способом доказать, что HTTP не безопасен.

2
ответ дан 8 December 2019 в 03:28
поделиться

Клиентское шифрование беспомощно против большинства нападений на MITM. Взломщик может просто удалить Ваш сценарий.

Это только защитит от пассивного сниффинга. Если это достаточно хорошо для Вас, можно использовать:

  • Хеширование, реализованное в JavaScript. Это легко реализовать ответ проблемы для начального входа в систему, но не забывает, что для сеансовых куки взломщика почти так же хорошо как пароль (необходимо было бы ограничить вход в систему единственного IP и/или сценария использования для генерации одноразового cookie для каждого запроса, который я воображаю, было бы трудное и хрупкое решение).
  • Дайджест-аутентификация HTTP. Более безопасный, поскольку это может использовать одноразовые хеши, взаимную аутентификацию, и т.д., но стандартный UI является абсолютно отталкивающим.

... просто используйте SSL.

2
ответ дан 8 December 2019 в 03:28
поделиться

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

Если Вы хотите достойное объяснение того, как реализовать дайджест-аутентификацию HTTP в Вашем приложении, у Paul James есть превосходная статья о нем.

Единственная настоящая проблема с Аутентификацией HTTP находится в самих браузерах: UI ужасен, но это может быть преодолено с некоторым JavaScript.

Можно сохранить пароли надежно путем хранения хеша A1.

ОБНОВЛЕНИЕ: Как упомянуто в других ответах, в то время как сервер может избежать нападений на MITM, не приняв Основного автора, клиент все еще уязвим, потому что он будет.

ОБНОВЛЕНИЕ: Вы не можете защитить данные по POST, если Вы любой не (a) сделайте шифрование в JavaScript на клиенте или, (b) делает все по SSL.

С определенным волшебством, можно использовать автора HTTP с формами. Статью, которую я связал с вышеупомянутым, называют 'Автором HTTP с HTML-формами', в конце концов. Но это не будет сделано по POST.

Если Вам действительно нужен он, действительно используют POST, используют SSL и солят пароли в Вашей базе данных.

Если Вы хотите, избегают CSRF, я рекомендую использовать formkeys, хотя идея идет многими различными именами, я поднял то имя со взламывания Slashcode для моего собственного использования несколько лет назад, который является, где я столкнулся с ним сначала.

5
ответ дан 8 December 2019 в 03:28
поделиться

Вы упомянули, что делали свое собственное шифрование плюс соль... Я предлагаю использовать javascript md5 (он также используется Yahoo на их не ssl страницы, или таким образом, он требует)...

И Вы двойной хеш пароль..., некоторые могут утверждать, что дважды хеширование его сделало бы его подверженным нападениям коллизии. Я должен был бы не согласиться, потому что люди смогли сделать до настоящего времени md5 коллизии подписи только на файлах, где большой объем данных является md5'ed...

Если бы это - большой корпоративный веб-сайт (и были бы причины ворваться) нет никакого оправдания, не используя SSL.

0
ответ дан 8 December 2019 в 03:28
поделиться

Ну, существует некоторая внутренняя дискуссия о вместо этого выполнении некоторого roll-our-own клиентского шифрования паролей (пароль + соль, и т.д.).

Первой вещью, к которой мы должны обратиться, являются данные в пути по сравнению с данными в покое. От OP это кажется, что большое беспокойство является именем пользователя/паролем в ясном по Интернету. Так, Вы действительно заботитесь о данных в пути. HTTPS через SSL является испытанным методом выполнения этого (и это - довольно легкая фиксация!). Теперь, если Вы действительно хотите к самокрутке для данных в покое (в дб, на файловом сервере, и т.д.), это - другой зверь, но существующие методы для шифрования данных будут лучше, чем самокрутка.

Доверие стороне клиента для Вашей безопасности плохо. Период. В корпоративной среде, да, можно несколько полагаться на стандартную установку. Но в конечном счете пользователи являются немыми, и можно столкнуться с кем-то запрещающим JavaScript или безотносительно основанного на клиенте решения, которое Вы развертываете, таким образом, они заканчивают тем, что отправили имя пользователя/пароль в простом тексте так или иначе (даже если Ваши серверы' не знают, что сделать с ним, потому что это не находится в ожидаемом формате.

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

1
ответ дан 8 December 2019 в 03:28
поделиться
Другие вопросы по тегам:

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