Прочитал две статьи о том, как у авторов уводили Телеграм-каналы. Схема одинаковая: тебе пишут якобы от имени какой-то известной фирмы с предложением заказать рекламу. Если ты соглашаешься, присылают ссылку на "Партнёрский кабинет", где нужно зарегистрироваться. Там спрашивают твой номер телефона и код из СМС, вот только СМС это авторизация в самом Телеграме. Вводишь код на сайт, с этого момента аккаунт потерян.
Что характерно:
1. Поддержка Телеграма просто игнорит юзеров. Судя по тому, что я о ней слышал, существует она номинально, если вообще существует. По крайней мере, поддержка для разработчиков ботов в какой-то момент перестала отвечать мне вообще, думаю, с обычной поддержкой то же самое. Зато команда Телеграма гордится тем, как мало у них людей в штате!
2. Попытки пользователя восстановить доступ обратно через свой телефон блокируются с помощью спама запросами. Злоумышленники начинают постоянно логиниться, и сервер Телеграма врубает защиту: "Слишком много попыток, попробуйте через сутки". То есть система, которая должна помогать хорошим и мешать плохим, делает ровно наоборот. Интересный кейс для собеседования на безопасника, мне кажется.
А так, конечно, всё ещё удивляют люди, которые ведут в интернете коммерческую деятельность, но не владеют даже базовыми навыками цифровой безопасности вроде "Везде включать 2FA" или "Смотреть в адресную строку".
#web
🚀 Вышел стабильный JavaScript движок от Google для Android
Новая стабильная библиотека Jetpack JavaScript Engine позволит разработчикам выполнять JS код в изолированной и ограниченной среде.
class MainActivity : ComponentActivity() {
// Теперь nullable, без lateinit
private var jsSandbox: JavaScriptSandbox? = null
private var jsIsolate: JavaScriptIsolate? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (!JavaScriptSandbox.isSupported()) {
Log.e("JS", "JavaScriptSandbox не поддерживается")
return
}
lifecycleScope.launch {
// Создаём и сохраняем в nullable-поле
jsSandbox = JavaScriptSandbox
.createConnectedInstanceAsync(applicationContext)
.await()
jsIsolate = jsSandbox?.createIsolate()
// При выполнении гарантируем, что jsIsolate != null
val result: String = jsIsolate
?.evaluateJavaScriptAsync(JS_SCRIPT_SCRING)
?.await()
?: "Ошибка: isolate не инициализирован"
Log.d("JS", "Результат выполнения: $result")
}
}
override fun onDestroy() {
super.onDestroy()
// Закрываем только если не null
jsIsolate?.close()
jsSandbox?.close()
}
}
#jetpack#js