Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как запретить использовать reflection для некоторых классов? / 11 сообщений из 11, страница 1 из 1
09.02.2017, 18:48
    #39401842
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить использовать reflection для некоторых классов?
Всем привет! Подскажите пожалуйста есть ли способ запретить использовать reflection для некоторых классов?

Не много покопавшись в интернете я нашел способ как запретить reflection для всех классов. Для этого нужно установить SecurityManager, но мне не нужно для всех мне нужно для определенных которые, например наследуются от моего класса MySecureClass.
...
Рейтинг: 0 / 0
09.02.2017, 19:09
    #39401857
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить использовать reflection для некоторых классов?
Mandarin,

По-хорошему никак. Чтобы получить, например, имя класса в SecurityManager нужно из стэка выковарять экземпляр класса Class, который вызвал SecurityManager. А нормального способа это сделать в Java, вроде нет.

То есть, если очень сильно захотеть, то попробовать можно. Но по большому счету оно не нужно и не стоит тех усилий. Как альтернатива, существует, обфускация, например.
Или вот Sealing:
https://docs.oracle.com/javase/tutorial/deployment/jar/sealman.html

А вопрос, у вас, как обычно, не про проблему, а про придуманное вами решение какой-то проблемы.
...
Рейтинг: 0 / 0
09.02.2017, 21:06
    #39401910
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить использовать reflection для некоторых классов?
Blazkowicz,

а я люблю делать велосипеды :)

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

как давно я на этом форуме спрашивал как сделать модульную систему
http://www.sql.ru/forum/1202486/kak-razbit-proekt-na-moduli?hl=
вместо того чтобы получить ссылку на OSGI :) получил все кроме правильного ответа. поэтому и приходиться выдумывать велосипеды.

но все же за ответ спасибо буду дальше выпиливать свой велосипед :)
...
Рейтинг: 0 / 0
10.02.2017, 10:11
    #39402047
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить использовать reflection для некоторых классов?
Mandarin, ты можешь написать логику на С++ к примеру и завернуть ее в native-вызов из Java
это уж точно помешает злоумышленнику (!) подсмотреть на то как организована твоя секретная
часть кода.

Но есть ли смысл? В Java постулировано на уровне спецификаций что рефлексия может поднять
сведения обо всех сигнатурах методов и названиях классов.

О SecurityManager можно говорить когда мы имеем уже работающий app-server. Но не тогда,
когда ваш артифакт скачали с maven rep.
...
Рейтинг: 0 / 0
10.02.2017, 11:29
    #39402124
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить использовать reflection для некоторых классов?
я с самого начала не сказал для чего мне это надо, по этому вы меня не правильно поняли. прошу прощения.

Поясняю:
1. Есть модульное приложение. Не OSGI :)
2. Есть разработчики модулей (системщики и прикладники)
3. Есть системные модули
4. Есть прикладные модули

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

как отличить системные модули от пользовательских пока не понятно, но не суть... пока можно просто по имени класса.
...
Рейтинг: 0 / 0
10.02.2017, 12:34
    #39402226
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить использовать reflection для некоторых классов?
Mandarinдля того чтобы не изобретать велосипед, надо знать, что уже есть и как это применять, и только тогда появятся знания как правильно поставить задачу, а потому уже ее решать...

как давно я на этом форуме спрашивал как сделать модульную систему

А всё потому что терминологии не знаете. Как в той теме, если плагин это модуль, то это ещё не значит что всякие модуль - плагин.
Так и в этой теме - "велосипеды" это что-то уже давно придуманное и широко используемое. То что вы хотите - нигде не используется и не существует. Чтобы получить точный ответ нужно сначала задать точный вопрос. Но ни в одной из тем вы не желаете описать проблему. Вы спрашиваете только про своё решение проблемы, при этом даже не заботясь выбором точных терминов.
...
Рейтинг: 0 / 0
10.02.2017, 15:01
    #39402330
breath
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить использовать reflection для некоторых классов?
выделить для прикладников отдельную jvm
...
Рейтинг: 0 / 0
10.02.2017, 15:46
    #39402363
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить использовать reflection для некоторых классов?
MandarinВсем привет! Подскажите пожалуйста есть ли способ запретить использовать reflection для некоторых классов?
Для начала, надо запретить использование Unsafe. В 9-ке говорят будет из коробки. :)
А так - разрешаешь подмену стандартных классов. В контейнер загружаешь подмененные для всего Reflection API. Ну и как-то транслируешь вызовы к оригинальным.

Когда все наладишь, чтоб не отвалилась половина функционала, будешь уметь строить свою JVM с нуля. :)
...
Рейтинг: 0 / 0
10.02.2017, 22:15
    #39402509
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить использовать reflection для некоторых классов?
BlazkowiczMandarinдля того чтобы не изобретать велосипед, надо знать, что уже есть и как это применять, и только тогда появятся знания как правильно поставить задачу, а потому уже ее решать...

как давно я на этом форуме спрашивал как сделать модульную систему

А всё потому что терминологии не знаете. Как в той теме, если плагин это модуль, то это ещё не значит что всякие модуль - плагин.
Так и в этой теме - "велосипеды" это что-то уже давно придуманное и широко используемое. То что вы хотите - нигде не используется и не существует. Чтобы получить точный ответ нужно сначала задать точный вопрос. Но ни в одной из тем вы не желаете описать проблему. Вы спрашиваете только про своё решение проблемы, при этом даже не заботясь выбором точных терминов.

конечно я не владею терминологией и не могу правильно сформулировать вопрос, потому что что не знаю терминологию :) получается масло масленое... по этому и пытаюсь выразить мысли своими словами. Если бы я мог правильно сформулировать вопрос стал бы я тут писать :) сходил бы в гугл с правильным вопросом :)
...
Рейтинг: 0 / 0
10.02.2017, 22:16
    #39402510
Mandarin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить использовать reflection для некоторых классов?
Сергей АрсеньевMandarinВсем привет! Подскажите пожалуйста есть ли способ запретить использовать reflection для некоторых классов?
Для начала, надо запретить использование Unsafe. В 9-ке говорят будет из коробки. :)
А так - разрешаешь подмену стандартных классов. В контейнер загружаешь подмененные для всего Reflection API. Ну и как-то транслируешь вызовы к оригинальным.

Когда все наладишь, чтоб не отвалилась половина функционала, будешь уметь строить свою JVM с нуля. :)

жду девятку :)
...
Рейтинг: 0 / 0
10.02.2017, 22:22
    #39402513
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запретить использовать reflection для некоторых классов?
Mandarinконечно я не владею терминологией и не могу правильно сформулировать вопрос
зато критиковать в целом форум вы умеете:
Mandarinвместо того чтобы получить ссылку на OSGI :) получил все кроме правильного ответа.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как запретить использовать reflection для некоторых классов? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]