Last active
December 16, 2015 19:19
-
-
Save walling/5483839 to your computer and use it in GitHub Desktop.
Sikkerhed i JavaScript-applikationer.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*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