@@ -83,6 +83,23 @@ describe('security', function () {
8383 } , / E r r o r : N o a c c e s s t o p r o p e r t y " b i n d / ) ;
8484 } )
8585
86+ it ( 'should not allow disguising forbidden properties with unicode characters' , function ( ) {
87+ var scope = {
88+ a : { }
89+ } ;
90+
91+ assert . throws ( function ( ) { math . eval ( 'a.co\u006Estructor' , scope ) ; } , / E r r o r : N o a c c e s s t o p r o p e r t y " c o n s t r u c t o r " / ) ;
92+ assert . throws ( function ( ) { math . eval ( 'a["co\\u006Estructor"]' , scope ) ; } , / E r r o r : N o a c c e s s t o p r o p e r t y " c o n s t r u c t o r " / ) ;
93+ assert . throws ( function ( ) { math . eval ( 'a.constructor' , scope ) ; } , / E r r o r : N o a c c e s s t o p r o p e r t y " c o n s t r u c t o r " / ) ;
94+ assert . throws ( function ( ) { math . eval ( 'a.constructor = 2' , scope ) ; } , / E r r o r : N o a c c e s s t o p r o p e r t y " c o n s t r u c t o r " / ) ;
95+ assert . throws ( function ( ) { math . eval ( 'a["constructor"] = 2' , scope ) ; } , / E r r o r : N o a c c e s s t o p r o p e r t y " c o n s t r u c t o r " / ) ;
96+ assert . throws ( function ( ) { math . eval ( 'a["co\\u006Estructor"] = 2' , scope ) ; } , / E r r o r : N o a c c e s s t o p r o p e r t y " c o n s t r u c t o r " / ) ;
97+ assert . throws ( function ( ) { math . eval ( 'a = {"constructor": 2}' , scope ) ; } , / E r r o r : N o a c c e s s t o p r o p e r t y " c o n s t r u c t o r " / ) ;
98+ assert . throws ( function ( ) { math . eval ( 'a = {constructor: 2}' , scope ) ; } , / E r r o r : N o a c c e s s t o p r o p e r t y " c o n s t r u c t o r " / ) ;
99+ assert . throws ( function ( ) { math . eval ( 'a = {"co\\u006Estructor": 2}' , scope ) ; } , / E r r o r : N o a c c e s s t o p r o p e r t y " c o n s t r u c t o r " / ) ;
100+ assert . throws ( function ( ) { math . eval ( 'a = {co\u006Estructor: 2}' , scope ) ; } , / E r r o r : N o a c c e s s t o p r o p e r t y " c o n s t r u c t o r " / ) ;
101+ } )
102+
86103 it ( 'should not allow calling Function via imported, overridden function' , function ( ) {
87104 assert . throws ( function ( ) {
88105 var math2 = math . create ( ) ;
0 commit comments