Как записать транзакционную часть в Java, чтобы обеспечить безопасность приложения, когда все остальные части написаны на PHP?

Мой друг во время работы над PHP-приложением попросил меня написать одну часть приложения на Java. Часть, которая включала транзакции. Он сказал, что будет лучше написать эту часть на Java. Он говорил о том, насколько это безопасно!

Хотя я был слишком занят, чтобы помочь ему тогда, я хочу знать суть этой идеи. Почему он пытался использовать Java, когда писал большую часть PHP? Будет ли это действительно повышать безопасность? А запись транзакций в Java касается только безопасности?

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

Примечание. Когда я говорю транзакцию, она включает в себя все. От доступа к учетной записи для перевода денег.

7 голосов | спросил Suhail Gupta 26 Mayam13 2013, 10:23:59

3 ответа


1

Правильное использование сильной системы языка имеет большое значение для уменьшения определенных типов ошибок - вариантов ошибок «при условии неправильного аргумента этого метода».

Например, подумайте о следующей функции:

transfer_money(from_account, to_account, amount)

В слабо /нетипизированном языке легко ввести в заблуждение код from_account и to_account; Также часто используются неправильные единицы в amount (например, доллары против центов).

Эти ошибки потребуют тщательного тестирования или тщательного ручного анализа кода.

OTOH, использование (экстремальное) типов приведет к такому методу:

transfer_money(SourceAccount from_account, 
               TargetAccount to_account,
               MoneyAmount   amount)

Такие же ошибки приведут к ошибке компиляции, что делает их намного менее вероятными для производства.

Теперь это не означает, что Java по своей сути безопаснее, чем PHP; Кроме того, аналогичная система не может быть легко реализована в PHP; Нельзя сказать, что на самом деле это обычное использование типов в Java; Но это дает Java крошечное преимущество над PHP для критических путей кода. Из POV безопасности Engineering делает Java более «безопасным».

ответил aviv 26 Maypm13 2013, 23:24:05
1

Я не думаю, что за этой идеей есть какая-то правда. Две основные вещи, которые будут отличаться при использовании Java, - это JVM и сам код.

  1. JVM. Я не эксперт в деталях jvm, но есть реализация PHP для jvm (например, http://www.caucho.com/resin-3.1/doc/quercus.xtp ). Они повысили безопасность как одну из функций, но указали только на расширения buggy php, т. Е. Не изъяны в самом PHP.

  2. Код. Если ваш друг может кодировать безопасную транзакцию на Java, вы должны иметь возможность повторно реализовать ее в PHP и иметь тот же уровень безопасности (хороший или плохой). Очень просто проверить, что две реализации имеют одинаковое поведение, хотя проверка их безопасности является совершенно другой историей.

В частности, в области кода транзакции я не думаю, что есть доказательства того, что Java по своей сути более безопасна, чем PHP.

ответил imel96 27 Mayam13 2013, 09:03:43
-7

Однопространственное кодирование в Java можно считать более безопасным в области хранения файлов.

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

В PHP хранится файл сценария, заполненный читаемым текстом. Итак, если каким-то образом файл был найден, программа может быть прочитана с помощью простого текстового редактора, такого как Notepad или Emacs.

Для безопасности это означает, что внутренняя работа программы будет скрыта при написании на Java. И только в том случае, если у кого-то был доступ к файлу программы. Как правило, с PHP программа существует на веб-сервере и выполняется без видимости в веб-браузере. Однако ваш друг, вероятно, хочет быть особенно осторожным.

ответил 26 Mayam13 2013, 11:04:08

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132