mirror of
https://bitbucket.org/siakitem/my-pi.git
synced 2026-08-28 16:45:22 +00:00
28 lines
1016 B
JavaScript
28 lines
1016 B
JavaScript
Challenge.init({ id: "strict-csp-fallback", instructions: "use screenshot/coordinates; click CSP TARGET" });
|
|
|
|
const btn = document.getElementById("cspTarget");
|
|
btn.style.cssText = [
|
|
"position:fixed",
|
|
"left:220px",
|
|
"top:220px",
|
|
"width:180px",
|
|
"height:72px",
|
|
"font:700 16px system-ui",
|
|
"background:#1f7a1f",
|
|
"color:white",
|
|
"border:0",
|
|
"border-radius:10px",
|
|
"box-shadow:0 0 0 4px rgba(31,122,31,.25)"
|
|
].join(";");
|
|
|
|
document.getElementById("cspTarget").addEventListener("click", (e) => {
|
|
const r = btn.getBoundingClientRect();
|
|
const bad = [];
|
|
if (!e.isTrusted) bad.push("click isTrusted=false");
|
|
if (e.clientX < r.left || e.clientX > r.right || e.clientY < r.top || e.clientY > r.bottom) {
|
|
bad.push(`click coordinates ${e.clientX},${e.clientY} outside target rect ${Math.round(r.left)},${Math.round(r.top)},${Math.round(r.right)},${Math.round(r.bottom)}`);
|
|
}
|
|
if (bad.length) Challenge.fail(...bad);
|
|
else Challenge.pass("strict CSP page completed via trusted viewport click");
|
|
});
|