簡體   English   中英

在存在實時多態性的情況下AngularJS如何運行

[英]How will AngularJS run in the presence of real-time polymorphism

英國《金融時報》剛剛在文章“由Google支持的合資企業使用變形代碼來擊敗黑客”中報道,實時多態性可能是網絡安全的下一個飛躍。 Shape Security吸引了來自Google Ventures,Facebook,LinkedIn,Twitter和DropBox的投資者。

Shape Security的“技術”頁面顯示明文html如下所示:

<form action="login_form.php">
  <input id="username" name="username"/>
  <input id="password" name="password"/>
  <input id="rememberMe" name="rememberMe"/>
  <input id="login" name="login"/>
  <input type="submit"/>
</form>

將動態轉換,以便在每個頁面請求上更改綁定名稱,例如:

<form action="d94M2eQgBK">
  <input id="v6DbNQEs4z" name="dtTtA6tsmi"/>
  <input id="b5KbBSjCT6" name="rWttCLcv3f"/>
  <input id="zQNA3ZBgKz" name="R2bHEe3taV"/>
  <input id="rvnFbpxKwN" name="HNnQwnUbtm"/>
  <input type="submit"/>
</form>

在AngularJS中,我們可能會使用指令ng-model在html級別將角度綁定字段設置為控制器中的javascript變量。 實時多態性還必須更改控制器中的變量名稱。 在某個時候,這些變化必須穩定下來,以便控制器變量可以傳遞回服務等。

ng-polymorph-model這樣的指令似乎可以包裝預期的多態性。 但是,提供給客戶端的DOM或js代碼中的任何程度的穩定性都是未來攻擊的誘因。

我很好奇AngularJS專家將如何處理實時多態性。

老實說,這不會影響任何框架,但是取決於您編寫代碼的方式。

這是如何避免問題的示例。

您將需要確保將ID和屬性的字符串表示形式存儲在對象中,並相應地命名它們。

代替:

var username = document.getElementById('username');

您將執行以下操作:

var username = document.getElementById(ids.username);

現在要實現此目的,您需要創建一個對象並創建變量,您將指向這些變量以供參考:

var ids = {
            submit : "submit",
            username : "username",
            password : "password",
            email : "email"
        }

因此,當您加密元素上的ID時,則需要替換'ids'對象中的字符串。 以下是加密的示例

 function encrypt() {
            var elems = document.querySelectorAll("[id]");
            for (var a = 0; a < elems.length; a++) {
                var elem = elems[a];
                if (ids[elem.id])
                {
                    var name =elem.id;
                    var g  = guid();
                    elem.id =g;
                    ids[name] =g;
                }
            }
            console.log(ids);
        }
 function s4() {
            return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
        };

        function guid() {
            return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();
        }

這是在抓取所有具有id屬性的元素,並在它們之間循環,更改id屬性,並使用正確的引用名稱更新'ids'對象。

希望這可以幫助 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM