– key lets proxies recognize themselves • unproxy(value, key) – returns handler for value – unproxyMap stores handlers • isVProxy(value) – tests whether value is a virtual value
Students;--"); var query = "select * from Students " + "where username = '" + username + "'"); if (isTainted (query)) throw new Error("Tainted query");
on confidentiality: – does secret data leak to public channels? • Assumes attacker controls some code • Must consider implicit flows – can the attacker deduce secrets?
assignThunk) { if (!isSecret(left) && pcStack.length > 0) { throw new Error("Implicit leak"); } assignThunk(); } and execution depends on secret data … If the lhs is a public variable … then crash the program.