Les utilisateurs octroient sans le savoir un accès aux fraudeurs en échange d’applications gratuites. Comme avez pu vous le montrer Data Security Breach et zataz.com lors du Forum International de la ...
Accueil / Les abus de permissions des applications mobiles
Parcourir la balise: Les abus de permissions des applications mobiles
Nos partenaires



Actualités du mois
Articles en UNE
Actus zataz
Réseaux sociaux
Liste des sujets
<!-- Cyber'Émission ZATAZ — badge volant (déplaçable) + réduire/fermer -->
<div class="zataz-yt-float" id="zatazYtFloat" role="region" aria-label="Cyber'Émission ZATAZ">
<div class="zataz-yt-float__bar" id="zatazYtBar">
<span class="zataz-yt-float__title">Cyber'Émission ZATAZ</span>
<div class="zataz-yt-float__actions">
<button type="button" class="zataz-yt-float__btn" id="zatazYtMin" aria-label="Réduire">—</button>
<button type="button" class="zataz-yt-float__btn zataz-yt-float__btn--close" id="zatazYtClose" aria-label="Fermer">×</button>
</div>
</div>
<a class="zataz-yt-badge" href="https://www.youtube.com/@ZATAZCOM" target="_blank" rel="noopener noreferrer"
aria-label="Regarder Cyber'Émission ZATAZ sur YouTube (nouvel onglet)">
<span class="zataz-yt-badge__thumb" aria-hidden="true">
<span class="zataz-yt-badge__play" aria-hidden="true"></span>
</span>
</a>
</div>
<style>
.zataz-yt-float{
position:fixed;
right:18px;
bottom:18px;
z-index:99999;
width:320px;
max-width:calc(100vw - 36px);
border-radius:14px;
overflow:hidden;
background:linear-gradient(135deg,#111827,#0b1220 55%,#111827);
border:1px solid rgba(255,255,255,.12);
box-shadow:0 14px 40px rgba(0,0,0,.35);
transform:translateZ(0);
user-select:none;
touch-action:none; /* drag mobile */
}
/* Barre de drag + boutons */
.zataz-yt-float__bar{
display:flex;
align-items:center;
justify-content:space-between;
gap:10px;
padding:10px 10px 10px 12px;
font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
color:#fff;
background:rgba(0,0,0,.18);
border-bottom:1px solid rgba(255,255,255,.10);
cursor:grab;
}
.zataz-yt-float__bar:active{ cursor:grabbing; }
.zataz-yt-float__title{
font-weight:800;
letter-spacing:.2px;
font-size:15px;
line-height:1;
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
}
.zataz-yt-float__actions{ display:flex; gap:8px; }
.zataz-yt-float__btn{
appearance:none;
border:1px solid rgba(255,255,255,.18);
background:rgba(0,0,0,.28);
color:#fff;
width:32px;
height:28px;
border-radius:10px;
font-weight:900;
line-height:1;
cursor:pointer;
display:grid;
place-items:center;
}
.zataz-yt-float__btn:hover{ background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.28); }
.zataz-yt-float__btn--close:hover{ background:rgba(239,68,68,.22); border-color:rgba(239,68,68,.45); }
/* Contenu (votre vignette) */
.zataz-yt-badge{
display:block;
text-decoration:none;
color:#fff;
}
.zataz-yt-badge__thumb{
display:block;
height:180px;
background:#0f172a url("https://i.ytimg.com/vi/HUo8dnD6Swk/hqdefault.jpg") center/cover no-repeat;
position:relative;
}
.zataz-yt-badge__play{
position:absolute;
left:50%;
top:50%;
width:54px;
height:54px;
margin:-27px 0 0 -27px;
border-radius:999px;
background:rgba(0,0,0,.55);
border:1px solid rgba(255,255,255,.25);
box-shadow:0 10px 22px rgba(0,0,0,.35);
}
.zataz-yt-badge__play:before{
content:"";
position:absolute;
left:22px;
top:16px;
width:0;height:0;
border-top:11px solid transparent;
border-bottom:11px solid transparent;
border-left:16px solid #fff;
}
.zataz-yt-float:hover{
box-shadow:0 18px 55px rgba(0,0,0,.45);
border-color:rgba(255,255,255,.18);
}
.zataz-yt-badge:active{ transform:scale(.99); }
/* Etat réduit */
.zataz-yt-float.is-min .zataz-yt-badge{ display:none; }
.zataz-yt-float.is-min{ width:260px; }
/* Mobile : plus compact */
@media (max-width:480px){
.zataz-yt-float{ width:280px; right:12px; bottom:12px; }
.zataz-yt-badge__thumb{ height:158px; }
.zataz-yt-float.is-min{ width:220px; }
}
</style>
<script>
(() => {
const box = document.getElementById('zatazYtFloat');
const bar = document.getElementById('zatazYtBar');
const btnMin = document.getElementById('zatazYtMin');
const btnClose = document.getElementById('zatazYtClose');
if (!box || !bar || !btnMin || !btnClose) return;
// Réduire / restaurer
btnMin.addEventListener('click', (e) => {
e.stopPropagation();
box.classList.toggle('is-min');
btnMin.textContent = box.classList.contains('is-min') ? '▢' : '—';
btnMin.setAttribute('aria-label', box.classList.contains('is-min') ? 'Restaurer' : 'Réduire');
});
// Fermer
btnClose.addEventListener('click', (e) => {
e.stopPropagation();
box.remove();
});
// Drag (souris + tactile) via Pointer Events
let dragging = false;
let startX = 0, startY = 0;
let startLeft = 0, startTop = 0;
// Position initiale: on convertit right/bottom en left/top pour le drag
const init = () => {
const r = box.getBoundingClientRect();
box.style.left = r.left + 'px';
box.style.top = r.top + 'px';
box.style.right = 'auto';
box.style.bottom = 'auto';
};
init();
const clamp = (v, min, max) => Math.min(Math.max(v, min), max);
bar.addEventListener('pointerdown', (e) => {
// pas de drag quand on clique sur les boutons
if (e.target === btnMin || e.target === btnClose) return;
dragging = true;
bar.setPointerCapture(e.pointerId);
const r = box.getBoundingClientRect();
startX = e.clientX;
startY = e.clientY;
startLeft = r.left;
startTop = r.top;
e.preventDefault();
});
bar.addEventListener('pointermove', (e) => {
if (!dragging) return;
const dx = e.clientX - startX;
const dy = e.clientY - startY;
const r = box.getBoundingClientRect();
const w = r.width;
const h = r.height;
const maxLeft = window.innerWidth - w - 8;
const maxTop = window.innerHeight - h - 8;
box.style.left = clamp(startLeft + dx, 8, maxLeft) + 'px';
box.style.top = clamp(startTop + dy, 8, maxTop) + 'px';
});
const endDrag = () => { dragging = false; };
bar.addEventListener('pointerup', endDrag);
bar.addEventListener('pointercancel', endDrag);
// Re-clamp au resize
window.addEventListener('resize', () => {
const r = box.getBoundingClientRect();
const maxLeft = window.innerWidth - r.width - 8;
const maxTop = window.innerHeight - r.height - 8;
box.style.left = clamp(r.left, 8, maxLeft) + 'px';
box.style.top = clamp(r.top, 8, maxTop) + 'px';
});
})();
</script>
