Pull to refresh
91
1

User

Send message
разочарован. статья озаглавлена «как работает архитектура». ожидал, что раскроют технические подробности, а вместо этого — маркетинговая лапша на уши.
я люблю assertions и пишу их часто.
наверное, я дурак ))
да, и ещё проблема этого кода — создание CValue вне наследника CStructBase. тогда этот CValue допишется в последний созданный экземпляр CStructBase (который может быть уже разрушен).

по-хорошему, после завершения всех конструкторов членов CMyStruct надо сделать g_mapByThreadId[GetCurrentThreadId()] = NULL

что-то не соображу, как это сделать автоматически, чтобы не повторять в каждом конструкторе CMyStruct
не нужно городить с блокировками и мапой, когда в ОС есть поддержка thread-переменных на уровне ОС без блокировок и с минимальным оверхедом

в с++
__declspec(thread) CStructBase* currentClass;

в C#, Pascal и т.п. тоже есть аналогичные windows-specific кейворды ([ThreadStatic], threadvar)
с double будет плохо, потому что одно число в формате с плавающей точкой (мантисса-порядок) может имет разные двоичные предстваления. грубо, 3*10^6=30*10^5

но скорее глюков можно огрести на выравнивании. в структуре
struct MyClass {
     char x;
     int y;
};

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

тыщу раз сталкивался: если первый пароль был mypassword, то при энфорсинге политики смены пароля работники ставят mypassword1, далее mypassword2 и т.д…

т.е. получить начальный пароль весьма интересно злоумышленнику
скажем так, широкоизвестный макрос
#define GETSET(type, name, name2) \
private: type name; \
public: TypeTraits<type>::ParameterType get##name2() const { return name; } \
        void set##name2(TypeTraits<type>::ParameterType a##name2) { name = a##name2; }

никого не напрягает.

если же это необходимо для самописной ORM, или XML-сериализатора, то почему бы и нет
«Эффективные манагеры» не одобряют.

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

В тему:
habrahabr.ru/post/135236/
тем более, что wipe скриптуется через PowerShell :)
Минуточку, а причём здесь андроид? Если протокол требует знания пароля от клиента, то как ни шифруй его, всё равно где-то он появится в открытом виде. Другое дело, если бы EAS мог на основании пароля выдавать девайсу уникальный токен, а потом пароль больше не требовался и удалялся из памяти в любом виде. То, что в винде пароль зашифрован каким-нибудь примитивным XOR-ом (или AES256, не суть, при наличии ключа на том же девайсе) даёт ложное чувство защищённости
Это совсем немного повышает безопасность.

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

В случае кражи с целью продать девайс, злоумышленник в первую очередь сам сделает wipe.
То есть, функционал защищает только от случайных незадачливых воришек.

Любопытно, что блокировка девайса на сервере не предотвращает доступ к данным. Все реквизиты доступа, в том числе свой доменный пароль, я обнаружил в файле
/data/data/com.htc.android.mail/shared_prefs/EASSetupWizard.xml

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

Андроид вообще в этом смысле не пытается делать security through obscurity. Например, пароли всех WiFi точек тоже лежат открыто.
Почему бы cl##name ob##name тоже не сделать static?
Тогда populate_statdata и VcfInitializer будут не нужны
Дело не в адроиде, а в рутованном девайсе. никто не мешает повторить сей трюк с Windows Mobile или iPhone. Декомпилятор в руки — и вперёд.

Во времена WM6 по просьбе одного участника с 4pda я снимал блокировку на загрузку девайса Loox C550. на форме ввода пароля было банальное переполнение — при вводе слишком длинной строки (16K знаков) локер банально падал, открывая рабочий стол. системный апплет смены пароля я подхачил, чтобы при старте он не спрашивал старый пароль, и можно было поставить новый или снять, не зная старого

Трюки с исправлением системных приложений делались ещё в школе, когда администратор в политиках запрещал запуск на компах Regedit, но правкой одного байта эта проверка шла лесом. Безопасность не может полагаться на клиентский код.
там немного другое. моды на xda-developers исправляют принудительный ввод пароля при запуске почты, а блокировку wipe я нигде не видел.
незаслуженно забыт River Raid. хотя его не было на NES, это вечная классика
12 ...
886

Information

Rating
1,651-st
Location
Россия
Registered
Activity