2009-09-14 2 views

ответ

10

№ Код хранится на сервере, где внешние пользователи (надеюсь) не имеют к нему доступа. Возможно, вам захочется запутать JavaScript, если вы считаете, что это стоит (минимальной) защиты IP.

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

+0

Гладкие внешние пользователи - единственные, о которых нам нужно беспокоиться. * eye roll * – NotMe

+0

Плохой выбор слов, может быть :) –

2

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

+0

Может быть, нам нужно обфускацию, чтобы защитить от веб-хостов, крадущего наш код или даже весь наш бизнес, нет? –

3

Единственный сценарий, в котором вы бы запутали веб-приложение java, - это предоставить код своим клиентам для запуска на своих серверах. В противном случае это просто пустая трата времени и дополнительная сложность.

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

+0

Может быть, нам нужно обфускацию, чтобы защитить от веб-хостов, крадущего наш код, нет? –

+0

@ user01, есть намного лучшие и важные меры безопасности, которые необходимо предпринять для защиты размещенного кода. Если вас беспокоят сторонние хостеры на этом уровне, честно говоря, вы должны быть у себя. – Yishai

+0

спасибо. Значит, вы имеете в виду, что я не должен быть настолько скептически настроен, что это вопрос доверия? также не могли бы вы намекнуть или указать мне, какие другие меры безопасности необходимо принять для защиты? –

5

IMO, no.

Есть два основные сценарии использования для запутывания:

  1. для защиты контроля доступа «секретов» (например, пароли), встроенные в коде, и
  2. для защиты от кого-то кражи вашей «интеллектуальной собственности» ,

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

Для сценариев использования выше, лучше альтернатив запутываний являются:

  1. просто не встраивать секреты в коде, и
  2. один или оба из следующих действий:
    • безопасные ваши веб-серверы, чтобы хакеры не могли получить код, и
    • не отправляйте код, который вы считаете ценным IP-адресом, или если вы это делаете, тогда отправляйте только код для людей, подписавших юридически обязывающий договор/лицензионное соглашение го при защите ваших прав на IP.
+1

уверен. Вы можете декомпилировать обфускацию JAR. На самом деле это то же самое, что и «нормальная» банка. Но это читаемо ... –

+2

Это достаточно читаемый для определенного хакера с умением умереть, чтобы точно определить, что он делает, и как он это делает. –

+0

#include #define __ (a) goto a; #define ___ (a) putchar (a); #define _ (a, b) ___ (a) __ (b); main() {_: __ (t) a: _ ('r', g) b: _ ('$', p) c: _ ('l', f) d: _ ('', s) e: _ ('a', s) f: _ ('o', q) g: _ ('l', h) h: _ ('d', n) i: _ ('e ', w) j: _ (' e ', x) k: _ (' \ n ', z) l: _ (' H ', l) m: _ (' X ', i) n: _ ('!', k) o: _ ('z', q) p: _ ('q', b) q: _ (',', d) r: _ ('i', l) s: _ ('w', v) t: _ ('H', j) u: _ ('a', a) v: _ ('o', a) w: _ (')', k) x: _ ('l', c) y: _ ('\ t', g) z: ___ (0x0)} –

2

Стоит ли запутывать веб-приложение java?

Это зависит

и почему?

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

Если вы подаете заявку на свое веб-приложение, и установка доступна только от вас, я бы сказал, что не стоит. Лучше было бы увеличить чистую безопасность.

* см Стивен C комментарий

+0

Обфускация не помешает клиенту декомпилировать ваш код. Даже если они не полностью успешны в декомпиляции к используемому исходному коду Java, они могут, вероятно, выяснить какой-либо секрет, который вы пытаетесь скрыть в коде. –

+0

Может быть, нам нужно обфускацию, чтобы защитить от веб-хостинга, крадущего наш код, нет? –

-2

Это хорошая идея, чтобы скрыть ваш сервер кода на стороне? Я бы дал безоговорочное ДА.

Реальность такова, что end user - это только одна группа, которая может иметь гнусные планы. Слишком часто internal сотрудники, независимо от того, являются ли они business users, support staff и т. Д., Также могут иметь свои собственные планы .. или сделаны unwittingaccomplices.

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

Это включает в себя защиту от внешних и internal людей. Компании теряют как данные, так и интеллектуальную собственность все время из-за внутренних людей со слишком большим доступом. Независимо от того, намерены ли эти люди похищать информацию или нет, это не имеет значения.

Итак, опять-таки, один шаг состоит в том, чтобы запутывать в надежде, что тот, кто приобретет бинарные файлы, усложнит процесс работы вашего приложения. Конечно, вы должны пойти намного дальше, защищая серверы, на которых он живет; и не только production, но и обратно до source control.

+0

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

+0

@ Ли Райан: Обфускация - это только один инструмент в поясе. ACL также критичны, но факт заключается в том, что не-dev сможет получить код; obfuscation обеспечит хотя бы некоторую защиту. Что касается криминализации их, прежде чем они совершают преступление ... Я бы предпочел исключить любое соблазнение и/или способность ПРИОР, чтобы выяснить, что «доверенный» человек заложил код, скопировал код и/или данные и т. Д. Но, если вы хотите верить, что корпоративный шпионаж не существует, тогда вам больше силы. Хек, пару недель назад я встретился с парнем, у которого была копия исходного кода его конкурентов. Интересно, как он это получил. – NotMe

+0

@Chris, скорее всего, из репозитория управления версиями или ноутбука разработчика. Я очень сомневаюсь, что они декомпилировали байт-код, почерпнутый из производственного веб-приложения. По крайней мере, это похоже на маловероятный вектор для атаки. – Yishai

1

Абсолютно верно.

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

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

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

Я еще не слышал каких-либо практических примеров обфускации на стороне сервера, вызывающих проблемы с развитием или административными проблемами.

 Смежные вопросы

  • Нет связанных вопросов^_^