User Tools

Site Tools


rm24934

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
rm24934 [2019/10/15 10:33] – [Misc] kalaschnikowrm24934 [2019/10/15 11:33] (current) – [rm24934: Avoid usage of eval in JavaScript context] kalaschnikow
Line 1: Line 1:
 +====== rm24934: Avoid usage of eval in JavaScript context ======
  
 +[[https://cust-projects.seeburger.de/redmine/issues/24934|rm24934: Avoid usage of eval in JavaScript context]] [[https://doc.supplyon.de/pages/viewpage.action?spaceKey=S10058&title=Avoid+usage+of+eval%28%29+in+JavaScript+context|In Confluence]]
 +
 +Subtickets:
 +  * **-** [[https://cust-projects.seeburger.de/redmine/issues/33092|rm33092: My Workspace: Eliminate eval() usage for navigation in menus]]
 +  * **-** [[https://cust-projects.seeburger.de/redmine/issues/33093|rm33093: Alert Overview E-mail Notification: Eliminate eval() usage]]
 +
 +
 +===== Possible use cases =====
 +
 +  * JSON -> A JSON string. -> ''{”x”: 1}''
 +  * JSONP -> A use of JSON. -> ''foo({”x”:1})''
 +  * Library -> Function definitions. -> ''function(){...}''
 +  * Read -> Read of a property. -> ''x.foo''
 +  * Assign -> Assignment. -> ''x.foo = 3''
 +  * Typeof -> Type test expression. -> ''typeof(x)!=”undefined”''
 +  * Try -> Trivial try-catch block. -> ''try{x=3;}catch{}''
 +  * Call -> Simple call. -> ''x.foo(1,2,3)''
 +  * Empty -> Blank string. -> ''””''
 +
 +===== Found occurences in airsupply =====
 +
 +==== airsupply\src\resources\airsupply.war\js\cfg\myworkspace\MyWorkspaceGroupingFeature.js -> 59 eval( link ); ====
 +
 +Function?
 +
 +Replacement:
 +<code>
 +new Function() {...}
 +</code>
 +
 +
 +==== Export of search results from IntelliJ ====
 +
 +Pure text:
 +
 +<code>
 +Targets
 +    Occurrences of 'eval(' in Directory D:\dev\intellij_ws\airsupply
 +
 +Found Occurrences  (11 usages found)
 +    Unclassified occurrence  (11 usages found)
 +        airsupply\src\resources\airsupply.war\js\cfg\myworkspace  (1 usage found)
 +            MyWorkspaceGroupingFeature.js  (1 usage found)
 +                59 eval( link );
 +        airsupply\src\resources\airsupply.war\jsp\alerts  (3 usages found)
 +            emailnotifyconf.jsp  (3 usages found)
 +                459 eval(<
 +                460 eval(<
 +                469 eval(<
 +        airsupply\src\resources\airsupply.war\jsp\base\md\material  (1 usage found)
 +            details.jsp  (1 usage found)
 +                668 var pattern = eval("/\\b" +classnametoremove +"\\b/");
 +        airsupply\src\resources\airsupply.war\jsp\base\md\oo  (1 usage found)
 +            spinplugin.jsp  (1 usage found)
 +                201 jsonContent = eval( "(" + req.responseText + ")" );
 +        airsupply\src\resources\airsupply.war\jsp\base\md\org  (1 usage found)
 +            orgdetails.jsp  (1 usage found)
 +                453 var pattern = eval("/\\b" +classnametoremove +"\\b/");
 +        smartiui\src\resources\smartiui.war\js\smarti\data  (1 usage found)
 +            SuiConnection.js  (1 usage found)
 +                300 jsonContent = eval( '(' + response.responseText + ')' );
 +        smartiui\src\resources\smartiui.war\js\smarti\data\deprecated  (1 usage found)
 +            SmartiConnectionManager.js  (1 usage found)
 +                162 jsonContent = eval( "(" + response.responseText + ")" );
 +        smartiui\src\resources\smartiui.war\js\smarti\widgets\table  (2 usages found)
 +            SUITable.js  (2 usages found)
 +                183 var dsPageData = eval( 'lastDSOptions.params.' + x );
 +                185 eval( 'delete lastDSOptions.params.' + x );
 +</code>
 +
 +===== Found occurences in airsupply-core =====
 +
 +==== Export of search results from IntelliJ ====
 +
 +<code>
 +Targets
 +    Occurrences of 'eval' in Directory D:\dev\intellij_ws\airsupply-core
 +Found Occurrences  (19 usages found)
 +    Unclassified occurrence  (19 usages found)
 +        agenda\src\resources\agenda.war\js  (2 usages found)
 +            checkdata.js  (2 usages found)
 +                488 var cobj = eval("document.forms[0].elements['"+column+"_"+rowIdx+"']");
 +                491 obj = eval("document.forms[0].elements['"+column+"_"+i+"']");
 +        agenda\src\resources\agenda.war\jsp\admin\agenda  (6 usages found)
 +            largerow.jsp  (2 usages found)
 +                196 eval(HookOnBodyFunc);
 +                1242 obj = eval("document.forms[0].elements['<%=uColumn%>_<%=uIdx%>']");
 +            tablecontent.jsp  (2 usages found)
 +                232 eval(HookOnBodyFunc);
 +                1847 obj = eval("document.forms[0].elements['<%=uColumn%>_<%=uIdx%>']");
 +            tables.jsp  (2 usages found)
 +                85 checkbx_h = eval("document.forms[0].checked_table_"+name)
 +                151 eval(HookOnBodyFunc);
 +        core\core-ejb\src\resources\core-fragment.war\js  (5 usages found)
 +            datepicker.js  (1 usage found)
 +                18 obj = eval(obj);
 +            functions.js  (4 usages found)
 +                409 dateCheck = eval(dateCheck);
 +                437 dateCheck = eval(dateCheck);
 +                463 dateCheck = eval(dateCheck);
 +                485 dateCheck = eval(dateCheck);
 +        core\core-ejb\src\resources\external\js\yahoo\autocomplete  (6 usages found)
 +            autocomplete-debug.js  (3 usages found)
 +                2745 jsonList = eval("jsonObjParsed." + aSchema[0]);
 +                2774 var jsonObjRaw = eval("(" + oResponse + ")");
 +                2782 jsonList = eval("(jsonObjRaw." + aSchema[0]+")");
 +            autocomplete.js  (3 usages found)
 +                2724 jsonList = eval("jsonObjParsed." + aSchema[0]);
 +                2753 var jsonObjRaw = eval("(" + oResponse + ")");
 +                2761 jsonList = eval("(jsonObjRaw." + aSchema[0]+")");
 +
 +</code>
 +
 +===== Misc =====
 +
 +[[http://janvitek.org/pubs/oopsla12b.pdf|Eval begone!]] - a document about "Evalorizer" - a tool removing evals automatically on the fly. In this document is described which scenarious of ''eval()'' are possible.