UNPKG

@s4e/jsentinel

Version:

Script integrity and clipboard tamper detection for browsers.

2 lines (1 loc) 1.19 kB
import{emit as e}from"./events-ffa6G8za.js";import{R as t}from"./index-hwEiSUPx.js";const n=[/addEventListener.*submit/i,/FormData/,/form.*submit/i,/chrome\.runtime\.sendMessage/,/browser\.runtime\.sendMessage/,/JSON\.stringify.*form/i,/encodeURIComponent.*input/i];function s(){function s(){Array.from(document.querySelectorAll("script")).forEach(s=>{s.textContent&&n.forEach(n=>{n.test(s.textContent)&&e({type:"alert",data:{key:s.src||"inline-script",src:s.src||null,inline:!s.src,expected:void 0,got:"",severity:"warn",reason:"suspicious-script-detected",description:t["suspicious-script-detected"],meta:{ts:Date.now()}}})})})}function r(){let n=0;const s=EventTarget.prototype.addEventListener;EventTarget.prototype.addEventListener=function(r,i){return"submit"===r&&"FORM"===this.tagName&&(n++,n>3&&e({type:"alert",data:{key:"form-access-behavior",src:null,inline:!1,expected:void 0,got:"",severity:"warn",reason:"excessive-form-access",description:t["excessive-form-access"],meta:{ts:Date.now()}}})),s.call(this,r,i)}}"undefined"!=typeof window&&("loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{s(),r()}):(s(),r()))}export{s as installExtensionGuard};