Skip to content

Instantly share code, notes, and snippets.

@walling
Last active Dec 16, 2015
Embed
What would you like to do?
Sikkerhed i JavaScript-applikationer.
/*jshint strict:true*/
(function() {
'use strict';
// Nyt scope, som ikke er tilgængeligt udefra.
// Bind reference til alle funktioner, som vi bruger, for at mindske risikoen for overskrivning.
var Number_toString_ = Number.prototype.toString;
var encodeURIComponent_ = encodeURIComponent;
var apply_ = Function.prototype.apply;
// etc.
// Byg sikker udgave af funktions-applikation.
var apply = function(func, obj, args) {
if (func.apply !== apply_) {
throw 'Security!'; // Brug ikke 'new Error', da konstruktøren kan overskrives udefra på flere måder.
} else {
return func.apply(obj, args);
}
};
// Gem nøgler i variabler, som ikke eksponeres uden for scope.
var secret = 42;
// etc.
// I beregninger bruger vi kun funktioner, som vi selv holder referencen til.
var xyz = apply(Number_toString_, secret, []);
// etc.
}());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment