Skip to content

Instantly share code, notes, and snippets.

@walling
Last active December 16, 2015 19:19

Revisions

  1. walling revised this gist Apr 29, 2013. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion sikkerhed.js
    Original file line number Diff line number Diff line change
    @@ -2,7 +2,7 @@
    (function() {
    'use strict';

    // Nyt scope, som ikke er tilgængeligt udefra.
    // 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;
  2. walling created this gist Apr 29, 2013.
    29 changes: 29 additions & 0 deletions sikkerhed.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,29 @@
    /*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.
    }());