DLint and JITProf. [FSE 15] JITProf: Pinpointing JIT-unfriendly JavaScript code Liang Gong, Michael Pradel, Koushik Sen

Size: px
Start display at page:

Download "DLint and JITProf. [FSE 15] JITProf: Pinpointing JIT-unfriendly JavaScript code Liang Gong, Michael Pradel, Koushik Sen"

Transcription

1 DLint and JITProf DLint: Dynamically Checking JS Coding Practice [ISSTA 15] DLint: Dynamically Checking Bad Coding Practices in JavaScript Liang Gong, Michael Pradel, Manu Sridharan, Koushik Sen JITProf: Find JS code that prohibit JIT-optimization [FSE 15] JITProf: Pinpointing JIT-unfriendly JavaScript code Liang Gong, Michael Pradel, Koushik Sen 1

2 DLint and JITProf for Web Pages mitmproxy Observe requests & intercepts responses that contain JS and webpages 2

3 DLint and JITProf DLint: Dynamically Checking JS Coding Practice [ISSTA 15] DLint: Dynamically Checking Bad Coding Practices in JavaScript Liang Gong, Michael Pradel, Manu Sridharan, Koushik Sen JITProf: Find JS code that prohibit JIT-optimization [FSE 15] JITProf: Pinpointing JIT-unfriendly JavaScript code Liang Gong, Michael Pradel, Koushik Sen 3

4 What are coding practices? Good coding practices Informal rules Improve code quality Better quality means: Fewer correctness issues Better performance Better usability Better maintainability Fewer security loopholes Fewer surprises 4

5 Rule: avoid using for..in over arrays var sum = 0, value; var array = [11, 22, 33]; for (value in array) { sum += value; > sum? 5

6 Rule: avoid using for..in over arrays var sum = 0, value; var array = [11, 22, 33]; for (value in array) { sum += value; > sum? => 66 array index (not array value) => 3 array index : string 0+"0"+"1"+"2" => "0012" 6

7 Rule: avoid using for..in over arrays var sum = 0, value; var array = [11, 22, 33]; for (value in array) { sum += value; > sum? => 66 array index (not array value) => 3 array index : string 0+"0"+"1"+"2" => "0012" 7 Cross-browser issues Result depends on the Array prototype object > "0012indexOftoString..."

8 Rule: avoid using for..in over arrays var sum = 0, value; var array = [11, 22, 33]; for (value in array) { sum += value; > sum? for (i=0; i < array.length; i++) { sum += array[i]; 8 function addup(element, index, array) { sum += element; array.foreach(addup);

9 Rule: avoid using for..in over arrays var sum = 0, value; var array = [11, 22, 33]; for (value in array) { sum += value; > sum? for (i=0; i < array.length; i++) { sum += array[i]; 9 function addup(element, index, array) { sum += element; array.foreach(addup);

10 Coding Practices and Lint Tools Existing Lint-like checkers Inspect source code Detect common mistakes Limitations: Approximates behavior Unknown aliases Lint tools favor precision over soundness Difficulty: Precise static program analysis 10

11 DLint Dynamic Linter checking code quality rules for JS Open-source, robust, and extensible framework Formalized and implemented 28 rules Counterparts of static rules Additional rules Empirical study It is better to use DLint and static linter together 11

12 Detect for..in over arrays with Jalangi var sum = 0, value; var array = [11, 22, 33]; for (value in array) { sum += value; > sum? for (i=0; i < array.length; i++) { sum += array[i]; 12 function addup(element, index, array) { sum += element; array.foreach(addup);

13 Detect for..in over arrays with Jalangi for (value in obj) { sum += value; 13

14 Detect for..in over arrays with Jalangi for (value in obj) { sum += value; Have a warning when obj in for-in is an array. 14

15 Detect for..in over arrays with Jalangi for (value in obj) { sum += value; instrumentation Jalangi Instrumented Code Have a warning when obj in for-in is an array. 15

16 Detect for..in over arrays with Jalangi for (value in obj) { sum += value; instrumentation Jalangi Instrumented Code Have a warning when obj in for-in is an array. function forinobject(iid, val) { 16

17 Detect for..in over arrays with Jalangi for (value in obj) { sum += value; instrumentation Jalangi Instrumented Code Have a warning when obj in for-in is an array. function forinobject(iid, val) { 17

18 Detect for..in over arrays with Jalangi for (value in obj) { sum += value; instrumentation Jalangi Instrumented Code Have a warning when obj in for-in is an array. function forinobject(iid, val) { if (isarray(val)) { // report warning! 18

19 Detect for..in over arrays with Jalangi for (value in obj) { sum += value; instrumentation Jalangi Instrumented Code Have a warning when obj in for-in is an array. function forinobject(iid, val) { if (isarray(val)) { // report warning! 19

20 Detect for..in over arrays with Jalangi for (value in obj) { sum += value; instrumentation Jalangi Instrumented Code Have a warning when obj in for-in is an array. 20 function forinobject(iid, val) { if (isarray(val)) { // J$.iidToLocation(iid); report warning!

21 Detect for..in over arrays with Jalangi for (value in obj) { sum += value; instrumentation Jalangi Instrumented Code Have a warning when obj in for-in is an array. 21 function forinobject(iid, val) { if (isarray(val)) { // J$.iidToLocation(iid); report warning! file.js:<start line>:<start col>:<end line>:<end col>

22 Detect for..in over arrays with Jalangi for (value in obj) { sum += value; instrumentation Jalangi Instrumented Code Have a warning when obj in for-in is an array. 22 function forinobject(iid, val) { if (isarray(val)) { // J$.iidToLocation(iid); report warning! file.js:<start line>:<start col>:<end line>:<end col>

23 Checkers CheckNaN.js ConcatUndefinedToString.js NonObjectPrototype.js SetFieldToPrimitive.js OverFlowUnderFlow.js StyleMisuse.js ToStringGivesNonString.js UndefinedOffset.js NoEffectOperation.js AddEnumerablePropertyToObject.js ConstructWrappedPrimitive.js InconsistentNewCallPrefix.js UncountableSpaceInRegexp.js FloatNumberEqualityComparison.js FunctionToString.js ShadowProtoProperty.js ForInArray.js NonNumericArrayProperty.js OverwrittenPrototype.js GlobalThis.js CompareFunctionWithPrimitives.js InconsistentConstructor.js FunctionCalledWithMoreArguments.js IllegalUseOfArgumentsVariable.js DoubleEvaluation.js EmptyClassInRegexp.js UseArrObjConstrWithoutArg.js MissRadixArgInParseNum.js 23

24 a.f = b.g Chained Analysis PutField(Read("a", a), "f", GetField(Read("b", b), "g")) Chained Analysis functions PutField Read Checker-1 functions PutField Read Checker-2 functions PutField Read Checker-n functions PutField Read 24

25 Other Resources Jalangi (v2) Github DLint + JITProf Github based on Jalangi (v2) JITProf Visualization Github based on Jalangi (v2) 25

26 DLint and JITProf DLint: Dynamically Checking JS Coding Practice [ISSTA 15] DLint: Dynamically Checking Bad Coding Practices in JavaScript Liang Gong, Michael Pradel, Manu Sridharan, Koushik Sen JITProf: Find JS code that prohibit JIT-optimization [FSE 15] JITProf: Pinpointing JIT-unfriendly JavaScript code Liang Gong, Michael Pradel, Koushik Sen 26

27 Motivation of JITProf Dynamic language features: Simplifies coding Write less, do more more productive Code is less verbose easier to understand 27

28 Motivation of JITProf Dynamic language features: Simplifies coding Write less, do more more productive Code is less verbose easier to understand Slow execution Too many runtime checks Object property lookup -> hash table lookup... 28

29 Pinpointing JIT-unfriendly JavaScript Code Code snippet from Google Octane Benchmark: SplayTree.prototype.insert = function(key, value) {... var node = new SplayTree.Node(key, value); if (key > this.root_.key) { node.left = this.root_; node.right = this.root_.right;... else { node.right = this.root_; node.left = this.root_.left;... this.root_ = node; ; 29

30 Pinpointing JIT-unfriendly JavaScript Code Code snippet from Google Octane Benchmark: SplayTree.prototype.insert = function(key, value) {... var node = new SplayTree.Node(key, value); if (key > this.root_.key) { node.left = this.root_; node.right = this.root_.right;... else { node.right = this.root_; node.left = this.root_.left;... this.root_ = node; ; Cause of poor performance: node has two layouts: offset of left in node can be 0 or 1 JIT cannot replace node.left with node[0] or node[1] 30

31 Pinpointing JIT-unfriendly JavaScript Code Code snippet from Google Octane Benchmark: SplayTree.prototype.insert = function(key, value) {... var node = new SplayTree.Node(key, value); if (key > this.root_.key) { node.left = this.root_; node.right = this.root_.right;... else { node.right = this.root_; node.left = this.root_.left;... this.root_ = node; ; Performance boost: 15% 6.7% 31

32 Pinpointing JIT-unfriendly JavaScript Code Code snippet from Google Octane Benchmark: SplayTree.prototype.insert = function(key, value) {... var JITProf node = new Simulates SplayTree.Node(key, the Hidden value); Classes if (key > this.root_.key) { based node.left on the = this.root_; information provided by Jalangi node.right = this.root_.right;... 15% else { node.right = this.root_; 6.7% node.left = this.root_.left;... this.root_ = node; ; Performance boost: 32

33 Back to the Motivating Example function Thing(flag) { if (!flag) { this.b = 4; this.a = 3; else { this.a = 2; this.b = 1; Each object has a meta information associated with it The meta information keeps track of its object layout and its transition history. for(var i = 0; i< ;i++) { var o = new Thing(i%2); result += o.a + o.b; 33

34 Back to the Motivating Example function Thing(flag) { if (!flag) { this.b = 4; this.a = 3; else { this.a = 2; this.b = 1; for(var i = 0; i< ;i++) { var o = new Thing(i%2); result += o.a + o.b; 34

35 Back to the Motivating Example function Thing(flag) { if (!flag) { this.b = 4; this.a = 3; else { this.a = 2; this.b = 1; Objects Anonymous Hidden Class Hidden Classes Property Offset proto Hidden class simulation before the statement for(var i = 0; i< ;i++) { var o = new Thing(i%2); result += o.a + o.b; 35

36 Back to the Motivating Example function Thing(flag) { if (!flag) { this.b = 4; this.a = 3; else { this.a = 2; this.b = 1; for(var i = 0; i< ;i++) { var o = new Thing(i%2); result += o.a + o.b; Objects Anonymous Hidden Class Objects Anonymous Offset 0 4 Hidden Class Hidden Classes Property Offset proto Hidden class simulation before the statement Hidden Classes Property Offset proto Property Offset b 0 proto Hidden class simulation after the statement 36

37 Back to the Motivating Example function Thing(flag) { if (!flag) { this.b = 4; this.a = 3; else { this.a = 2; this.b = 1; for(var i = 0; i< ;i++) { var o = new Thing(i%2); result += o.a + o.b; Objects Anonymous Offset 0 4 Offset 1 3 Hidden Class Objects Anonymous2 Offset 0 2 Offset 1 3 Hidden Class Hidden Classes Property Offset proto Property Offset b 0 proto Property Offset b 0 a 1 proto Property Offset a 0 proto Property Offset a 0 b 1 proto 37

38 Back to the Motivating Example function Thing(flag) { if (!flag) { this.b = 4; this.a = 3; else { this.a = 2; this.b = 1; for(var i = 0; i< ;i++) { var o = new Thing(i%2); result += o.a + o.b; Objects Anonymous Hidden Class Hidden Classes Property Offset proto Hidden class simulation before the statement Property Offset Offset 0 4 proto Hidden Class Property Offset b 0 proto Hidden class simulation after the statement 38

39 function Thing(flag) { if (!flag) { this.b = 4; this.a = 3; else { this.a = 2; this.b = 1; invoke Back to the Motivating Example for(var i = 0; i< ;i++) { var o = new Thing(i%2); result += o.a + o.b; Objects Anonymous Hidden Class Offset 0 4 Hidden Class Hidden Classes Property Offset proto Hidden class simulation before the statement Property Offset proto function putfieldpre (iid, base, offset, val ) { // logic for updating the hidden class Jalangi Property Offset b 0 proto Hidden class simulation after the statement 39

40 function Thing(flag) { if (!flag) { this.b = 4; this.a = 3; else { this.a = 2; this.b = 1; invoke Back to the Motivating Example for(var i = 0; i< ;i++) { var o = new Thing(i%2); result += o.a + o.b; Objects Anonymous Hidden Class Offset 0 4 Hidden Class Hidden Classes Property Offset proto Hidden class simulation before the statement Property Offset proto function putfieldpre (iid, base, offset, val ) { // logic for updating the hidden class Jalangi this.b = 4; Property Offset b 0 proto Hidden class simulation after the statement 40

41 function Thing(flag) { if (!flag) { this.b = 4; this.a = 3; else { this.a = 2; this.b = 1; invoke Back to the Motivating Example for(var i = 0; i< ;i++) { var o = new Thing(i%2); result += o.a + o.b; Objects Anonymous Hidden Class Offset 0 4 Hidden Class Hidden Classes Property Offset proto Hidden class simulation before the statement Property Offset proto function putfieldpre (iid, base, offset, val ) { // logic for updating the hidden class Jalangi this.b = 4; Property Offset b 0 proto Hidden class simulation after the statement 41

42 function Thing(flag) { if (!flag) { this.b = 4; this.a = 3; else { this.a = 2; this.b = 1; invoke Back to the Motivating Example for(var i = 0; i< ;i++) { var o = new Thing(i%2); result += o.a + o.b; Objects Anonymous Hidden Class Offset 0 4 Hidden Class Hidden Classes Property Offset proto Hidden class simulation before the statement Property Offset proto function putfieldpre (iid, base, offset, val ) { // logic for updating the hidden class Jalangi this.b = 4; 'b' Property Offset b 0 proto Hidden class simulation after the statement 42

43 function Thing(flag) { if (!flag) { this.b = 4; this.a = 3; else { this.a = 2; this.b = 1; invoke Back to the Motivating Example for(var i = 0; i< ;i++) { var o = new Thing(i%2); result += o.a + o.b; Objects Anonymous Hidden Class Offset 0 4 Hidden Class Hidden Classes Property Offset proto Hidden class simulation before the statement Property Offset proto function putfieldpre (iid, base, offset, val ) { // logic for updating the hidden class Jalangi this.b = 4; 'b' Property Offset b 0 proto Hidden class simulation after the statement 43

44 function Thing(flag) { if (!flag) { this.b = 4; this.a = 3; else { this.a = 2; this.b = 1; invoke Back to the Motivating Example Jalangi for(var i = 0; i< ;i++) { var o = new Thing(i%2); result += o.a + o.b; Objects Anonymous Hidden Class Offset 0 4 Hidden Class Hidden Classes Property Offset proto Hidden class simulation before the statement this.b = 4; 'b' Property Offset proto function putfieldpre (iid, base, offset, val ) { Property Offset var sobj = J$.smemory.getShadowObject(base); b 0 sobj.hiddenclass... proto Hidden class simulation after the statement 44

45 Back to the Motivating Example function Thing(flag) { if (!flag) { this.b = 4; this.a = 3; else { this.a = 2; this.b = 1; Intercept putfield to update the hidden class for(var i = 0; i< ;i++) { var o = new Thing(i%2); result += o.a + o.b; var o = {a: 1, b: 2; 45

46 Back to the Motivating Example function Thing(flag) { if (!flag) { this.b = 4; this.a = 3; else { this.a = 2; this.b = 1; Intercept putfield to update the hidden class Intercept invokefun to record object creation location for(var i = 0; i< ;i++) { var o = new Thing(i%2); result += o.a + o.b; var o = {a: 1, b: 2; 46

47 Back to the Motivating Example function Thing(flag) { if (!flag) { this.b = 4; this.a = 3; else { this.a = 2; this.b = 1; for(var i = 0; i< ;i++) { var o = new Thing(i%2); result += o.a + o.b; Intercept putfield to update the hidden class Intercept invokefun to record object creation location Intercept getfield to record inline cache misses var o = {a: 1, b: 2; 47

48 Back to the Motivating Example function Thing(flag) { if (!flag) { this.b = 4; this.a = 3; else { this.a = 2; this.b = 1; for(var i = 0; i< ;i++) { var o = new Thing(i%2); result += o.a + o.b; var o = {a: 1, b: 2; Intercept putfield to update the hidden class Intercept invokefun to record object creation location Intercept getfield to record inline cache misses Intercept literal to update hidden class + record object creation location 48

49 JIT-unfriendly Code Checked by JITProf Use inconsistent object layout Access undeclared property or array element Store non-numeric value in numeric arrays Use in-contiguous keys for arrays Not all properties are initialized in constructors and more 49

50 Install DLint and JITProf with Jalangi2 npm install (third-party framework) pip install pyopenssl pip install mitmproxy== Install the mitmproxy certificate manually (drag-and-drop) 50

51 (third-party framework) man-in-the-middle proxy Interactive, SSL-capable proxy for HTTP with a console interface. Intercept http communication between the client and the server for instrumentation. request forwarded request Browser forwarded response mitmproxy response Server 51

52 Install mitmproxy pip install pyopenssl pip install mitmproxy==

53 Install mitmproxy pip install pyopenssl pip install mitmproxy==

54 The HTTPS Problem Man-in-the-middle Proxy SSL and HTTPS is designed against MITM HTTPS Handle shake error due to uncertified modification via instrumentation request forwarded request Browser response mitmproxy + Jalangi Instrumentation Server 54

55 The HTTPS Problem Man-in-the-middle Proxy SSL and HTTPS is designed against MITM HTTPS Handle shake error due to uncertified modification via instrumentation request forwarded request response Browser mitmproxy + Jalangi Instrumentation Server + a Certificate Authority Implementation 55

56 The HTTPS Problem Man-in-the-middle Proxy SSL and HTTPS is designed against MITM HTTPS Handle shake error due to uncertified modification via instrumentation request forwarded request response Browser mitmproxy + Jalangi Instrumentation Server + a Certificate Authority Implementation 56

57 Install the CA System of mitmproxy pip install mitmproxy== Then run mitmproxy in the terminal In browser, configure HTTP and HTTPS proxy Server: Port:

58 Install the CA System of mitmproxy pip install mitmproxy== Then run mitmproxy in the terminal In browser, configure HTTP and HTTPS proxy Server: Port:

59 Install the CA System of mitmproxy pip install mitmproxy== Then run mitmproxy in the terminal In browser, configure HTTP and HTTPS proxy Server: Port:

60 Install the CA System of mitmproxy pip install mitmproxy== Then run mitmproxy in the terminal In browser, configure HTTP and HTTPS proxy Server: Port:

61 Install the CA System of mitmproxy 1. Type mitmproxy in the console 2. Open the browser with proxy configured 3. Go to mitm.it URL 61

62 Install the CA System of mitmproxy Click on the icon of the OS you are using 62

63 Install the CA System of mitmproxy A certificate file will be downloaded 63

64 Install the CA System of mitmproxy Open the Keychain app in Mac OS 64

65 Install the CA System of mitmproxy Drag and drop the cer file into the keychain 65

66 Other Resources Jalangi (v2) Github DLint + JITProf Github based on Jalangi (v2) JITProf Visualization Github based on Jalangi (v2) Questions 66

67 67

68 68

69

70 Rule #5: Use Contiguous Keys for Array var array = []; for (var i=10000;i>=0;i--){ array[i] = i; 70

71 Rule #5: Use Contiguous Keys for Array var array = []; for (var i=10000;i>=0;i--){ array[i] = i; array[10000] = 10000; array[9999] = 9999;... non-contiguous array To save memory, JIT-engine decides to represent the array with slow data structures like hash table. 71

72 Rule #5: Use Contiguous Keys for Array var array = []; for (var i=10000;i>=0;i--){ array[i] = i; for (var i=0;i<=10000;i++){ array[i] = i; 10X+ speedup! 72

73 Rule #5: Use Contiguous Keys for Array var array = []; for (var i=10000;i>=0;i--){ loc1: array[i] = i; Intercept putfield operation of arrays Rank locations by number assignments to non-contiguous arrays 73

74 (*)means smaller is better group average sunspider-chrome-sha1 (*) octane-firefox-splay Sunspider-String-Tagcloud (*) octane-firefox-deltablue octane-chrome-box2d octane-chrome-raytrace original refactored original refactored original refactored original refactored original refactored original refactored improve rate 26.3% 3.5% 11.7% 1.4% 7.5% 12.9% higher better 74

75 (*)means smaller is better group average octane-chrome-splay octane-chrome-splaylatency sunspider-chrome-3d-cube (*) sunspider-firefox-sha1 (*) sunspider-firefox-xparb (*) sunspider-chrome-md5 (*) sunspider-chrome-format-tofte (*) original refactored original refactored original refactored original refactored original refactored original refactored original refactored improve rate 15.1% 3.8% 1.1% 3.3% 19.7% 24.6% 3.4% higher better 75

76 DLint: Dynamically Checking Bad Coding Practices in JavaScript Liang Gong, Michael Pradel, Manu Sridharan, Koushik Sen [ISSTA 15] Designed and Implemented in 10 days Not all decisions were well-thought Problematic language features Error prone Poor performance Prone to security vulnerabilities Problematic features are still around Backward compatibility 76

77 Hidden Class Objects var obj = {a:1,b:2 var obj2 = {a:3,b:4 Map in V8 Shape in SpiderMonkey Structure in JavaScriptCore obj Offset 0 1 Offset 1 2 Hidden Class obj2 Offset 0 3 Offset 1 4 Hidden Class Hidden Classes Property Offset a 0 b 1 proto 77

78 Hidden Class Objects var obj = {a:1,b:2 var obj2 = {a:3,b:4 function geta(o){ return o.a; geta(obj); obj Offset 0 1 Offset 1 2 Hidden Class obj2 Offset 0 3 Offset 1 4 Hidden Class Hidden Classes Property Offset a 0 b 1 proto 78

79 Hidden Class + Inline Caching Objects var obj = {a:1,b:2 var obj2 = {a:3,b:4 function geta(o){ return o.a; geta(obj); obj Offset 0 1 Offset 1 2 Hidden Class obj2 Offset 0 3 Offset 1 4 Hidden Class function geta(o){ if(o is an object && o.hiddenclass == cached_hiddenclass) return o[cached_a_offset]; else{ // jump to V8 runtime Hidden Classes Property Offset a 0 b 1 proto 79

80 Hidden Class + Inline Caching Objects var obj = {a:1,b:2 var obj2 = {a:3,b:4 function geta(o){ return o.a; geta(obj); obj Offset 0 1 Offset 1 2 Hidden Class obj2 Offset 0 3 Offset 1 4 Hidden Class function geta(o){ if(o is an object && o.hiddenclass == cached_hiddenclass) return o[cached_a_offset]; else{ // jump to V8 runtime Hidden Classes Property Offset a 0 b 1 proto An inline cache hit 80

81 Hidden Class + Inline Caching Objects var obj = {a:1,b:2 var obj2 = {a:3,b:4 function geta(o){ return o.a; geta(obj); obj Offset 0 1 Offset 1 2 Hidden Class obj2 Offset 0 3 Offset 1 4 Hidden Class function geta(o){ if(o is an object && o.hiddenclass == cached_hiddenclass) return o[cached_a_offset]; else{ // jump to V8 runtime Hidden Classes Property Offset a 0 b 1 proto An inline cache hit An inline cache miss 81

82 Hidden Class + Inline Caching A monomorphic inline cache hit requires 3-10 instructions, while an inline cache miss requires 1000 ~ 4000 instructions [1] function geta(o){ if(o is an object && o.hiddenclass == cached_hiddenclass) return o[cached_a_offset]; else{ // jump to V8 runtime An inline cache hit An inline cache miss [1] Wonsun Ahn et al. PLDI 14 82

JITProf: Pinpointing JIT-Unfriendly JavaScript Code

JITProf: Pinpointing JIT-Unfriendly JavaScript Code JITProf: Pinpointing JIT-Unfriendly JavaScript Code Liang Gong 1, Michael Pradel 2, Koushik Sen 1 1 UC Berkeley, 2 TU Darmstadt 1 Motivation JavaScript: One of the most popular languages Performance: Crucial

More information

DLint: Dynamically Checking Bad Coding Practices in JavaScript

DLint: Dynamically Checking Bad Coding Practices in JavaScript DLint: Dynamically Checking Bad Coding Practices in JavaScript Liang Gong 1, Michael Pradel 2, Manu Sridharan 3 and Koushik Sen 1 1 UC Berkeley 2 TU Darmstadt 3 Samsung Research America Why JavaScript?

More information

DLint: Dynamically Checking Bad Coding Practices in JavaScript

DLint: Dynamically Checking Bad Coding Practices in JavaScript DLint: Dynamically Checking Bad Coding Practices in JavaScript Liang Gong 1, Michael Pradel 2, Manu Sridharan 3 and Koushik Sen 1 1 UC Berkeley 2 TU Darmstadt 3 Samsung Research America Why JavaScript?

More information

JITProf: Pinpointing JIT-Unfriendly JavaScript Code

JITProf: Pinpointing JIT-Unfriendly JavaScript Code JITProf: Pinpointing JIT-Unfriendly JavaScript Code Liang Gong 1, Michael Pradel 2, and Koushik Sen 1 1 EECS Department, University of California, Berkeley, USA 2 Department of Computer Science, TU Darmstadt,

More information

DLint: Dynamically Checking Bad Coding Practices in JavaScript

DLint: Dynamically Checking Bad Coding Practices in JavaScript DLint: Dynamically Checking Bad Coding Practices in JavaScript Lian Gong, Michael Pradel, Manu Sridharan and Koushik Sen Presented by Adriano Lages dos Santos Belo Horizonte - 16/04/2015 Introduction Javascript

More information

Metacircular Virtual Machine Layering for Run-Time Instrumentation. Erick Lavoie, Bruno Dufour, Marc Feeley Université de Montréal ericklavoie.

Metacircular Virtual Machine Layering for Run-Time Instrumentation. Erick Lavoie, Bruno Dufour, Marc Feeley Université de Montréal ericklavoie. Metacircular Virtual Machine Layering for Run-Time Instrumentation Erick Lavoie, Bruno Dufour, Marc Feeley Université de Montréal ericklavoie.com 1 Motivation 2 2 Context Program comprehension Benchmark

More information

INF5750. Introduction to JavaScript and Node.js

INF5750. Introduction to JavaScript and Node.js INF5750 Introduction to JavaScript and Node.js Outline Introduction to JavaScript Language basics Introduction to Node.js Tips and tools for working with JS and Node.js What is JavaScript? Built as scripting

More information

TypeDevil: Dynamic Type Inconsistency Analysis for JavaScript

TypeDevil: Dynamic Type Inconsistency Analysis for JavaScript TypeDevil: Dynamic Type Inconsistency Analysis for JavaScript Michael Pradel 1, Parker Schuh 2, Koushik Sen 2 1 TU Darmstadt, 2 UC Berkeley 1 Motivation JavaScript: Dynamic and permissive Problems remain

More information

Wavecrest Certificate SHA-512

Wavecrest Certificate SHA-512 Wavecrest InstallationGuide Wavecrest Certificate SHA-512 www.wavecrest.net Copyright Copyright 1996-2018, Wavecrest Computing, Inc. All rights reserved. Use of this product and this manual is subject

More information

ShortCut: Architectural Support for Fast Object Access in Scripting Languages

ShortCut: Architectural Support for Fast Object Access in Scripting Languages Jiho Choi, Thomas Shull, Maria J. Garzaran, and Josep Torrellas Department of Computer Science University of Illinois at Urbana-Champaign http://iacoma.cs.uiuc.edu ISCA 2017 Overheads of Scripting Languages

More information

Static Analysis of JavaScript. Ben Hardekopf

Static Analysis of JavaScript. Ben Hardekopf Static Analysis of JavaScript Insights and Challenges Ben Hardekopf Department of Computer Science University of California, Santa Barbara Setting Expectations What this talk is about Brief introduction

More information

In Praise of Metacircular Virtual Machine Layering. Erick Lavoie, Bruno Dufour, Marc Feeley Université de Montréal ericklavoie.com

In Praise of Metacircular Virtual Machine Layering. Erick Lavoie, Bruno Dufour, Marc Feeley Université de Montréal ericklavoie.com In Praise of Metacircular Virtual Machine Layering Erick Lavoie, Bruno Dufour, Marc Feeley Université de Montréal ericklavoie.com Motivation 2 Context Program comprehension Benchmark generation Hybrid

More information

Demand-Driven Points-To Analysis For Java

Demand-Driven Points-To Analysis For Java Demand-Driven Points-To Analysis For Java Manu Sridharan, Ras Bodik Lexin Shan Denis Gopan UC Berkeley Microsoft UW Madison OOPSLA 2005 1 Who needs better pointer analysis? IDEs: for refactoring, program

More information

Run-time characteristics of JavaScript

Run-time characteristics of JavaScript Run-time characteristics of JavaScript http://d3s.mff.cuni.cz CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Part I Introduction On paper An analysis of the Dynamic Behavior of the JavaScript

More information

Synode: Understanding and Automatically Preventing Injection Attacks on Node.js

Synode: Understanding and Automatically Preventing Injection Attacks on Node.js Synode: Understanding and Automatically Preventing Injection Attacks on Node.js Cristian-Alexandru Staicu 1 Michael Pradel 1 Ben Livshits 2 1 TU Darmstadt 2 Imperial College London, Brave Software February

More information

Secure Web Appliance. SSL Intercept

Secure Web Appliance. SSL Intercept Secure Web Appliance SSL Intercept Table of Contents 1. Introduction... 1 1.1. About CYAN Secure Web Appliance... 1 1.2. About SSL Intercept... 1 1.3. About this Manual... 1 1.3.1. Document Conventions...

More information

JavaScript: the Big Picture

JavaScript: the Big Picture JavaScript had to look like Java only less so be Java's dumb kid brother or boy-hostage sidekick. Plus, I had to be done in ten days or something worse than JavaScript would have happened.! JavaScript:

More information

How to Configure SSL Interception in the Firewall

How to Configure SSL Interception in the Firewall Most applications encrypt outgoing connections with SSL or TLS. SSL Interception decrypts SSL-encrypted HTTPS and SMTPS traffic to allow Application Control features (such as the Virus Scanner, ATP, URL

More information

Transparent Object Proxies for JavaScript

Transparent Object Proxies for JavaScript Transparent Object Proxies for JavaScript Matthias Keil 1, Omer Farooq 1, Sankha Narayan Guria 2, Andreas Schlegel 1, Manuel Geffken 1, Peter Thiemann 1 1 University of Freiburg, Germany, 2 Indian Institute

More information

CYAN SECURE WEB HOWTO. SSL Intercept

CYAN SECURE WEB HOWTO. SSL Intercept CYAN SECURE WEB HOWTO January 2009 Applies to: CYAN Secure Web 1.6 and above allows you to inspect SSL encrypted traffic. Therefore all filter mechanisms can be applied to HTTPS traffic. Without, all data

More information

This document describes the configuration of Secure Sockets Layer (SSL) decryption on the FirePOWER Module using ASDM (On-Box Management).

This document describes the configuration of Secure Sockets Layer (SSL) decryption on the FirePOWER Module using ASDM (On-Box Management). Contents Introduction Prerequisites Requirements Components Used Background Information Outbound SSL Decryption Inbound SSL Decryption Configuration for SSL Decryption Outbound SSL decryption (Decrypt

More information

Interprocedural Type Specialization of JavaScript Programs Without Type Analysis

Interprocedural Type Specialization of JavaScript Programs Without Type Analysis Interprocedural Type Specialization of JavaScript Programs Without Type Analysis Maxime Chevalier-Boisvert joint work with Marc Feeley ECOOP - July 20th, 2016 Overview Previous work: Lazy Basic Block Versioning

More information

CNIT 129S: Securing Web Applications. Ch 3: Web Application Technologies

CNIT 129S: Securing Web Applications. Ch 3: Web Application Technologies CNIT 129S: Securing Web Applications Ch 3: Web Application Technologies HTTP Hypertext Transfer Protocol (HTTP) Connectionless protocol Client sends an HTTP request to a Web server Gets an HTTP response

More information

javascripts in the javascripts ffconf 2014 andy wingo

javascripts in the javascripts ffconf 2014 andy wingo javascripts in the javascripts ffconf 2014 andy wingo the es6 circus es-discuss clownshoes C++ knife-jugglers JavaScript acrobats is coming to town building Hark, an agenda: es.next in es.now Why? How:

More information

SYSTEM REQUIREMENTS M.APP ENTERPRISE

SYSTEM REQUIREMENTS M.APP ENTERPRISE SYSTEM REQUIREMENTS M.APP ENTERPRISE Description or Document Category October 06, 2016 Contents M.App Enterprise Server... 3 Hardware requirements... 3 Disk space requirements... 3 Production environment

More information

How to Configure SSL Interception in the Firewall

How to Configure SSL Interception in the Firewall Most applications encrypt outgoing connections with SSL or TLS. SSL Interception decrypts SSL-encrypted traffic to allow Application Control features (such as the Virus Scanner, ATD, URL Filter, Safe Search,

More information

Using VMware Identity Manager Apps Portal

Using VMware Identity Manager Apps Portal Using VMware Identity Manager Apps Portal VMware Identity Manager This document supports the version of each product listed and supports all subsequent versions until the document is replaced by a new

More information

Know Your Engines How to Make Your JavaScript Fast

Know Your Engines How to Make Your JavaScript Fast Know Your Engines How to Make Your JavaScript Fast Dave Mandelin 8 November 2011 O Reilly Velocity Europe JavaScript is getting really fast and programs are getting crazy Bullet physics engine (ammo.js)

More information

Security. https://outflux.net/slides/2015/osu-devops.pdf. DevOps Bootcamp, OSU, Feb 2015 Kees Cook (pronounced Case )

Security. https://outflux.net/slides/2015/osu-devops.pdf. DevOps Bootcamp, OSU, Feb 2015 Kees Cook (pronounced Case ) https://outflux.net/slides/2015/osu-devops.pdf, Feb 2015 Kees Cook (pronounced Case ) Who is this guy? Fun: DefCon CTF team won in 2006 & 2007 Debian Ubuntu Jobs: OSDL (proto Linux Foundation)

More information

Uniform Resource Locators (URL)

Uniform Resource Locators (URL) The World Wide Web Web Web site consists of simply of pages of text and images A web pages are render by a web browser Retrieving a webpage online: Client open a web browser on the local machine The web

More information

Browser Settings. Updated 4/30/ SSF

Browser Settings. Updated 4/30/ SSF Browser Settings Updated 4/30/2014 - SSF Contents How to Locate the Online Banking URL... 3 Initial Steps for Browser Settings... 8 Internet Explorer... 9 Firefox... 13 Chrome... 18 Safari 6.0.5 and up...

More information

Breaking SSL Why leave to others what you can do yourself?

Breaking SSL Why leave to others what you can do yourself? Breaking SSL Why leave to others what you can do yourself? By Ivan Ristic 1/ 26 Who is Ivan Ristic? 1) ModSecurity (open source web application firewall), 2) Apache 2/ 33 Security (O Reilly, 2005), 3)

More information

Man in the middle attack on TextSecure Signal. David Wind IT SeCX 2015

Man in the middle attack on TextSecure Signal. David Wind IT SeCX 2015 Man in the middle attack on TextSecure Signal David Wind IT SeCX 2015 $ whoami David Wind Information Security Master student @ University of Applied Science St. Pölten Working for XSEC infosec GmbH since

More information

Browser Checklist. Objective. Content. 1) Zurich recommended browser

Browser Checklist. Objective. Content. 1) Zurich recommended browser Browser Checklist Objective To ensure that agents have the fastest and best experience of Zurich einsurance portal. By checking that agents have the best browser on the computers. By creating a shortcut

More information

Understanding the Dynamics of JavaScript

Understanding the Dynamics of JavaScript Understanding the Dynamics of JavaScript Sylvain Lebresne, Gregor Richards, Johan Östlund, Tobias Wrigstad, Jan Vitek Purdue University July 6, 2009 1 / 28 1 Introduction 2 JavaScript 3 Measurements 4

More information

How to Configure SSL VPN Portal for Forcepoint NGFW TECHNICAL DOCUMENT

How to Configure SSL VPN Portal for Forcepoint NGFW TECHNICAL DOCUMENT How to Configure SSL VPN Portal for Forcepoint NGFW TECHNICAL DOCUMENT Ta Table of Contents Table of Contents TA TABLE OF CONTENTS 1 TABLE OF CONTENTS 1 BACKGROUND 2 CONFIGURATION STEPS 2 Create a SSL

More information

Barracuda Firewall Release Notes 6.5.x

Barracuda Firewall Release Notes 6.5.x Please Read Before Upgrading Before installing the new firmware version, back up your configuration and read all of the release notes that apply to the versions that are more current than the version that

More information

VII. Corente Services SSL Client

VII. Corente Services SSL Client VII. Corente Services SSL Client Corente Release 9.1 Manual 9.1.1 Copyright 2014, Oracle and/or its affiliates. All rights reserved. Table of Contents Preface... 5 I. Introduction... 6 Chapter 1. Requirements...

More information

CRM Connector for Salesforce

CRM Connector for Salesforce CRM Connector for Salesforce Administrator Guide Version 1.1 October, 2016 Page 1 Table of contents INTRODUCTION AND GETTING STARTED OPERATING SYSTEM, HARDWARE AND SOFTWARE REQUIREMENTS Supported Browsers

More information

Understanding and Automatically Preventing Injection Attacks on Node.js

Understanding and Automatically Preventing Injection Attacks on Node.js Understanding and Automatically Preventing Injection Attacks on Node.js Michael Pradel TU Darmstadt Joint work with Cristian Staicu (TU Darmstadt) and Ben Livshits (Microsoft Research, Redmond) 1 Why JavaScript?

More information

HTML5 Evolution and Development. Matt Spencer UI & Browser Marketing Manager

HTML5 Evolution and Development. Matt Spencer UI & Browser Marketing Manager HTML5 Evolution and Development Matt Spencer UI & Browser Marketing Manager 1 HTML5 Ratified. finally! After 7 years of development, the HTML5 specification was ratified on 28 th October 14 urce>

More information

JavaScript: Sort of a Big Deal,

JavaScript: Sort of a Big Deal, : Sort of a Big Deal, But Sort of Quirky... March 20, 2017 Lisp in C s Clothing (Crockford, 2001) Dynamically Typed: no static type annotations or type checks. C-Like Syntax: curly-braces, for, semicolons,

More information

MBFuzzer - MITM Fuzzing for Mobile Applications

MBFuzzer - MITM Fuzzing for Mobile Applications MBFuzzer - MITM Fuzzing for Mobile Applications Fatih Özavcı Mentor of MBFuzer @ yakindanegitim.org fatih.ozavci at gamasec.net gamasec.net/fozavci Scope Yakindan Egitim Project Security Vulnerabilities

More information

Subversive-C: Abusing and Protecting Dynamic Message Dispatch

Subversive-C: Abusing and Protecting Dynamic Message Dispatch Subversive-C: Abusing and Protecting Dynamic Message Dispatch Julian Lettner, Benjamin Kollenda, Andrei Homescu, Per Larsen, Felix Schuster, Lucas Davi, Ahmad-Reza Sadeghi, Thorsten Holz, Michael Franz

More information

Getting Started with. Management Portal. Version

Getting Started with. Management Portal. Version Getting Started with Management Portal Version 10.1.0.0 Copyright RES Software Development B.V. All rights reserved. Commercial Computer Software documentation/data Restricted Rights. RES and RES ONE are

More information

Man in the Middle Attacks and Secured Communications

Man in the Middle Attacks and Secured Communications FEBRUARY 2018 Abstract This document will discuss the interplay between Man in The Middle (MiTM/ MITM) attacks and the security technologies that are deployed to prevent them. The discussion will follow

More information

An Actionable Performance Profiler for Optimizing the Order of Evaluations

An Actionable Performance Profiler for Optimizing the Order of Evaluations An Actionable Performance Profiler for Optimizing the Order of Evaluations Marija Selakovic TU Darmstadt Germany m.selakovic89@gmail.com ABSTRACT The efficiency of programs often can be improved by applying

More information

Dynamic Dispatch and Duck Typing. L25: Modern Compiler Design

Dynamic Dispatch and Duck Typing. L25: Modern Compiler Design Dynamic Dispatch and Duck Typing L25: Modern Compiler Design Late Binding Static dispatch (e.g. C function calls) are jumps to specific addresses Object-oriented languages decouple method name from method

More information

for Windows Release Notes: Version September 12, 2013 Document version: MINDJET Page 1

for Windows Release Notes: Version September 12, 2013 Document version: MINDJET Page 1 for Windows Release Notes: Version 14.0.334 September 12, 2013 Document version: 130912 MINDJET Page 1 Table of Contents RESOLVED ISSUES IN VERSION 14.0.334... 3 General Usability... 3 Import / Export

More information

Course 2320 Supplementary Materials. Modern JavaScript Best Practices

Course 2320 Supplementary Materials. Modern JavaScript Best Practices Supplementary Materials Modern JavaScript 1 Modern JavaScript JavaScript is an essential component of HTML5 web applications Required by HTML5 application programming interfaces (APIs) Extends basic functionality

More information

Executive Summary. Performance Report for: The web should be fast. Top 4 Priority Issues

Executive Summary. Performance Report for:   The web should be fast. Top 4 Priority Issues The web should be fast. Executive Summary Performance Report for: https://www.wpspeedupoptimisation.com/ Report generated: Test Server Region: Using: Tue,, 2018, 12:04 PM -0800 London, UK Chrome (Desktop)

More information

Clear Cache Guide Click here for Windows guide Click here for Mac OS guide

Clear Cache Guide Click here for Windows guide Click here for Mac OS guide Velocity@ocbc Clear Cache Guide Click here for Windows guide Click here for Mac OS guide Version 1.0 1 of 18 Step 1: Check your browser version 1. Type www.whatismybrowser.com at the address bar and press

More information

Parallels Remote Application Server

Parallels Remote Application Server Parallels Remote Application Server Parallels Client for Chrome User's Guide v16 Parallels International GmbH Vordergasse 59 8200 Schaffhausen Switzerland Tel: + 41 52 672 20 30 www.parallels.com Copyright

More information

How to Render SSL Useless. Render SSL Useless. By Ivan Ristic 1 / 27

How to Render SSL Useless. Render SSL Useless. By Ivan Ristic 1 / 27 How to Render SSL Useless By Ivan Ristic 1 / 27 Who is Ivan Ristic? 1) ModSecurity (open source web application firewall), 2) Apache 2 / 33 Security (O Reilly, 2005), 3) SSL Labs (research and assessment

More information

Legacy of Heartbleed: MITM and Revoked Certificates. Alexey Busygin NeoBIT

Legacy of Heartbleed: MITM and Revoked Certificates. Alexey Busygin NeoBIT Legacy of Heartbleed: MITM and Revoked Certificates Alexey Busygin busygin@neobit.ru NeoBIT Notable Private Key Leaks 2010 DigiCert Sdn Bhd. issued certificates with 512-bit keys 2012 Trustwave issued

More information

Lab 3: Using Worklight Server and Environment Optimization Lab Exercise

Lab 3: Using Worklight Server and Environment Optimization Lab Exercise Lab 3: Using Worklight Server and Environment Optimization Lab Exercise Table of Contents Lab 3 Using the Worklight Server and Environment Optimizations... 3-4 3.1 Building and Testing on the Android Platform...3-4

More information

Adobe Marketing Cloud Bloodhound for Mac 3.0

Adobe Marketing Cloud Bloodhound for Mac 3.0 Adobe Marketing Cloud Bloodhound for Mac 3.0 Contents Adobe Bloodhound for Mac 3.x for OSX...3 Getting Started...4 Processing Rules Mapping...6 Enable SSL...7 View Hits...8 Save Hits into a Test...9 Compare

More information

Pro JavaScript. Development. Coding, Capabilities, and Tooling. Den Odell. Apress"

Pro JavaScript. Development. Coding, Capabilities, and Tooling. Den Odell. Apress Pro JavaScript Development Coding, Capabilities, and Tooling Den Odell Apress" Contents J About the Author About the Technical Reviewers Acknowledgments Introduction xv xvii xix xxi Chapter 1: Object-Oriented

More information

Kerio Control. User Guide. Kerio Technologies

Kerio Control. User Guide. Kerio Technologies Kerio Control User Guide Kerio Technologies 2017 Kerio Technologies s.r.o. Contents Viewing activity reports in Kerio Control Statistics......................... 5 Overview..................................................................

More information

Exploiting unknown browsers and objects. with the Hackability inspector

Exploiting unknown browsers and objects. with the Hackability inspector Exploiting unknown browsers and objects with the Hackability inspector!1 About me U+6158 I'm a researcher at PortSwigger I hacking JavaScript 1337inalert(1) @garethheyes!2 Hackability Created to test capabilities

More information

LLV8: Adding LLVM as an extra JIT tier to V8 JavaScript engine

LLV8: Adding LLVM as an extra JIT tier to V8 JavaScript engine LLV8: Adding LLVM as an extra JIT tier to V8 JavaScript engine Dmitry Melnik dm@ispras.ru September 8, 2016 Challenges of JavaScript JIT compilation Dynamic nature of JavaScript Dynamic types and objects:

More information

Kaspersky Security Center 10 Web Console. User Guide

Kaspersky Security Center 10 Web Console. User Guide Kaspersky Security Center 10 Web Console User Guide Dear User, Thank you for your trust! We hope that this document will help you in your work and will provide answers regarding this software product.

More information

This document is for informational purposes only. PowerMapper Software makes no warranties, express or implied in this document.

This document is for informational purposes only. PowerMapper Software makes no warranties, express or implied in this document. OnDemand User Manual Enterprise User Manual... 1 Overview... 2 Introduction to SortSite... 2 How SortSite Works... 2 Checkpoints... 3 Errors... 3 Spell Checker... 3 Accessibility... 3 Browser Compatibility...

More information

Fuzzilli. (Guided-)fuzzing for JavaScript engines. Samuel Groß

Fuzzilli. (Guided-)fuzzing for JavaScript engines. Samuel Groß Fuzzilli (Guided-)fuzzing for JavaScript engines Samuel Groß (saelo@google.com) Motivation Cool bugs in JS engine runtime implementations, JIT compilers, etc. var a = [1, 2, 3, 4, 5]; var i = {}; i.valueof

More information

IBM Trusteer Rapport Solution Update

IBM Trusteer Rapport Solution Update IBM Trusteer Rapport Solution Update In July 2017, Trusteer released an update to Rapport that uses a new extensions-based architecture for browser protection. We are pleased to announce that they are

More information

Node.js I Getting Started

Node.js I Getting Started Node.js I Getting Started Chesapeake Node.js User Group (CNUG) https://www.meetup.com/chesapeake-region-nodejs-developers-group Agenda Installing Node.js Background Node.js Run-time Architecture Node.js

More information

Surfing safely over the Tor anonymity network. Georg Koppen Philipp Winter

Surfing safely over the Tor anonymity network. Georg Koppen Philipp Winter Surfing safely over the Tor anonymity network Georg Koppen gk@torproject.org Philipp Winter phw@torproject.org How does Tor work? What are exit relays? Currently ~7,000 relays, ~1,000 are exits All run

More information

Step 7 How to convert a YouTube Video to Music As I mentioned in the YouTube Introduction, you can convert a Video to a MP3 file using Free Video To

Step 7 How to convert a YouTube Video to Music As I mentioned in the YouTube Introduction, you can convert a Video to a MP3 file using Free Video To Step 7 How to convert a YouTube Video to Music As I mentioned in the YouTube Introduction, you can convert a Video to a MP3 file using Free Video To MP3 Converter program. Next I will show you how to download

More information

Practical Issues with TLS Client Certificate Authentication

Practical Issues with TLS Client Certificate Authentication Practical Issues with TLS Client Certificate Authentication Arnis Parsovs February 26, 2014 1 / 10 Motivation 2 / 10 Motivation Problems with password authentication: 2 / 10 Motivation Problems with password

More information

STEP 1 STEP 2 STEP 3 STEP 4 You may see the following. Then click OK. information on your screen: Click on the more apps to expand the list.

STEP 1 STEP 2 STEP 3 STEP 4 You may see the following. Then click OK. information on your screen: Click on the more apps to expand the list. Using Adobe Flash Software The S.T.A.B.L.E. Program Learner Course PowerPoint slides are packaged with Adobe Flash and will play using a Flash Player. This means you do not have to have PowerPoint installed

More information

Performance Issues and Optimizations in JavaScript: An Empirical Study

Performance Issues and Optimizations in JavaScript: An Empirical Study Performance Issues and Optimizations in JavaScript: An Empirical Study Marija Selakovic Department of Computer Science TU Darmstadt, Germany m.selakovic89@gmail.com Michael Pradel Department of Computer

More information

SALESFORCE DMP SUPERTAG USER GUIDE 00. SuperTag User Guide VER. 2, UPDATED 1/16. Rights Reserved, Proprietary &

SALESFORCE DMP SUPERTAG USER GUIDE 00. SuperTag User Guide VER. 2, UPDATED 1/16. Rights Reserved, Proprietary & SALESFORCE DMP SUPERTAG USER GUIDE 00 SuperTag User Guide VER. 2, UPDATED 1/16 SALESFORCE DMP SUPERTAG USER GUIDE 01 CONTENTS I. Introduction 2 SuperTag Overview 2 Benefits of Managing Tags with SuperTag

More information

Report Exec Enterprise Browser Settings. Choose Settings Topic

Report Exec Enterprise Browser Settings. Choose Settings Topic Report Exec Enterprise Browser Settings Choose Settings Topic Overview... 2 Technical Support... 2 Windows OS... 2 Microsoft Internet Explorer... 2... 2 Trusted Sites... 3 Browsing History... 3 Temporary

More information

System Requirements for EnlightKS Online Certification Management Services ET2.13 February 2012 (et ).

System Requirements for EnlightKS Online Certification Management Services ET2.13 February 2012 (et ). System Requirements for EnlightKS Online Certification Management Services ET2.13 February 2012 (et2-2.13-13). Operating System: Microsoft Windows XP/Vista/7. Mac OS X 10.5.x, 10.6.x Display resolution

More information

CONFIGURATION MANUAL. English version

CONFIGURATION MANUAL. English version CONFIGURATION MANUAL English version Frama F-Link Configuration Manual (EN) All rights reserved. Frama Group. The right to make changes in this Installation Guide is reserved. Frama Ltd also reserves the

More information

BROWSER-BASED SUPPORT CONSOLE USER S GUIDE. 31 January 2017

BROWSER-BASED SUPPORT CONSOLE USER S GUIDE. 31 January 2017 BROWSER-BASED SUPPORT CONSOLE USER S GUIDE 31 January 2017 Contents 1 Introduction... 2 2 Netop Host Configuration... 2 2.1 Connecting through HTTPS using Certificates... 3 2.1.1 Self-signed certificate...

More information

Aventail README ASAP Platform version 8.0

Aventail README ASAP Platform version 8.0 Aventail README 1 Aventail README ASAP Platform version 8.0 Part No. 0850-000010-01 October 19, 2004 This README highlights new features and provides late-breaking information about the Aventail EX-1500

More information

Need to Node: Profiling Node.js Applications

Need to Node: Profiling Node.js Applications Need to Node: Profiling Node.js Applications Patrick Mueller January 19, 2016 Questions during the Need to Node webinar? Post a question to Twitter with the hashtag: #needtonode 2 NodeSource is the Enterprise

More information

Table of Content. Last updated: June 16th, 2015

Table of Content. Last updated: June 16th, 2015 BROWSER SETTINGS MASTER DOCUMENT Last updated: June 16th, 2015 Table of Content General Information... 2 Internet Explorer 8,9, & 11 Settings... 3 Safari Settings... 5 Firefox Settings... 6 Google Chrome

More information

CyberTools for Libraries Catalog Functions ,

CyberTools for Libraries Catalog Functions , CyberTools for Libraries Catalog Functions 2017-05-19, 2017-07-06 A. Workstation requirements B. How does the new method differ from the old method? C. How it works D. Workstation and browser notes 1.

More information

Web Page Settings Guide

Web Page Settings Guide TABLE OF CONTENTS ABOUT THIS GUIDE................................................................................... 2 WEB PAGE..........................................................................................

More information

SPOOFING. Information Security in Systems & Networks Public Development Program. Sanjay Goel University at Albany, SUNY Fall 2006

SPOOFING. Information Security in Systems & Networks Public Development Program. Sanjay Goel University at Albany, SUNY Fall 2006 SPOOFING Information Security in Systems & Networks Public Development Program Sanjay Goel University at Albany, SUNY Fall 2006 1 Learning Objectives Students should be able to: Determine relevance of

More information

What Cannot be Read, Cannot be Leveraged?

What Cannot be Read, Cannot be Leveraged? What Cannot be Read, Cannot be Leveraged? Revisiting Assumptions of JIT-ROP Defenses Giorgi Maisuradze, Michael Backes, Christian Rossow CISPA, Saarland University, Germany Overview Code Reuse Attacks/Defenses

More information

Mac OS X version 10.6 and Below for Students

Mac OS X version 10.6 and Below for Students Mac OS X version 10.6 and Below for Students The University Technology Services is privileged to offer a secure wifi network to the university community. Connecting to this network will provide you with

More information

Skytap Remote Access/Connectivity Checker Troubleshooting Guide

Skytap Remote Access/Connectivity Checker Troubleshooting Guide The Skytap Remote Access Client (SRA) supports multiple Operating Systems, Browsers, and Java versions. To ensure the most seamless experience when accessing a Skytap Cloud environment using the SRA, please

More information

Better Web Development with WebKit Remote Debugging. Ashutosh Jagdish Sharma Senior Computer Scientist Adobe Developer Track WWW 2012 Lyon

Better Web Development with WebKit Remote Debugging. Ashutosh Jagdish Sharma Senior Computer Scientist Adobe Developer Track WWW 2012 Lyon Better Web Development with WebKit Remote Debugging Ashutosh Jagdish Sharma Senior Computer Scientist Adobe Developer Track WWW 2012 Lyon Agenda WebKit Remote Debugging Protocol Demos and Code Walkthroughs

More information

Executive Summary. Performance Report for: https://edwardtbabinski.us/blogger/social/index. The web should be fast. How does this affect me?

Executive Summary. Performance Report for: https://edwardtbabinski.us/blogger/social/index. The web should be fast. How does this affect me? The web should be fast. Executive Summary Performance Report for: https://edwardtbabinski.us/blogger/social/index Report generated: Test Server Region: Using: Analysis options: Tue,, 2017, 4:21 AM -0400

More information

Index G, H, I J, K D, E. network monitoring, 15 waterfall chart, 15 Firefox memory window, 98

Index G, H, I J, K D, E. network monitoring, 15 waterfall chart, 15 Firefox memory window, 98 Index A Android Virtual Device Manager, 198, 199 apply() function, 61 axis() function, 55 B Balancing performance practical application monitoring web performance, 192 sharing findings, 201 202 site instrumentation,

More information

Fingerprinting Information in JavaScript Implementations. Keaton Mowery, Dillon Bogenreif, Scott Yilek, and Hovav Shacham

Fingerprinting Information in JavaScript Implementations. Keaton Mowery, Dillon Bogenreif, Scott Yilek, and Hovav Shacham Fingerprinting Information in JavaScript Implementations Keaton Mowery, Dillon Bogenreif, Scott Yilek, and Hovav Shacham Authentication Usernames and Passwords weakening Third-party data loss can compromise

More information

TIBCO LiveView Web Getting Started Guide

TIBCO LiveView Web Getting Started Guide TIBCO LiveView Web Getting Started Guide Introduction 2 Prerequisites 2 Installation 2 Installation Overview 3 Downloading and Installing for Windows 3 Downloading and Installing for macos 4 Installing

More information

BI Office. Web Authentication Model Guide Version 6

BI Office. Web Authentication Model Guide Version 6 Web Authentication Model Guide Version 6 Copyright Pyramid Analytics 2010-2016 Contents 1. Web Authentication Model Overview... 3 A. Basic Authentication Models... 3 B. Windows Authentication Models...

More information

BXG BLUX Game Engine Getting Started BXG Getting Started

BXG BLUX Game Engine Getting Started BXG Getting Started BXG Getting Started 1. Setup... 2 1.1. General Tools... 2 1.2. Downloading BXG SDK... 3 1.3. Downloading Sample Games... 6 2. Step-by-Step Example of Game Source Writing... 9 2.1. Constructing Game working

More information

Basic Firewall Configuration

Basic Firewall Configuration Basic Firewall Configuration An Introduction to GTA Firewalls GB-OS Course # 1101 8/26/2013 Global Technology Associates, Inc. 1 Introduction to GTA Firewalls Firewall Administration Serial SSL Initial

More information

System Requirements. Contents

System Requirements. Contents System Requirements Contents 1. Introduction... 2 2. Adobe Flash Required for the 2017 18 School Year... 2 3. Hardware Requirements... 2 4. i-ready Support for the ipad... 5 5. Current System Requirements...

More information

Mortgage Cadence System Minimum Requirements and Troubleshooting

Mortgage Cadence System Minimum Requirements and Troubleshooting Purpose Mortgage Cadence System Minimum Requirements and Troubleshooting This document defines the browser requirements to operate Mortgage Cadence with the necessary encryption and how to troubleshoot

More information

Harmony Highlights Proxies & Traits. Tom Van Cutsem Mark S. Miller

Harmony Highlights Proxies & Traits. Tom Van Cutsem Mark S. Miller Harmony Highlights Proxies & Traits Tom Van Cutsem Mark S. Miller 1 Ecmascript 5 Strict Mode: guards against common pitfalls rejects confusing features (e.g. with statement) throws exceptions instead of

More information

Attacks Against Websites 3 The OWASP Top 10. Tom Chothia Computer Security, Lecture 14

Attacks Against Websites 3 The OWASP Top 10. Tom Chothia Computer Security, Lecture 14 Attacks Against Websites 3 The OWASP Top 10 Tom Chothia Computer Security, Lecture 14 OWASP top 10. The Open Web Application Security Project Open public effort to improve web security: Many useful documents.

More information

Session 8. Reading and Reference. en.wikipedia.org/wiki/list_of_http_headers. en.wikipedia.org/wiki/http_status_codes

Session 8. Reading and Reference. en.wikipedia.org/wiki/list_of_http_headers. en.wikipedia.org/wiki/http_status_codes Session 8 Deployment Descriptor 1 Reading Reading and Reference en.wikipedia.org/wiki/http Reference http headers en.wikipedia.org/wiki/list_of_http_headers http status codes en.wikipedia.org/wiki/_status_codes

More information

JSAI: A STATIC ANALYSIS PLATFORM FOR JAVASCRIPT

JSAI: A STATIC ANALYSIS PLATFORM FOR JAVASCRIPT JSAI: A STATIC ANALYSIS PLATFORM FOR JAVASCRIPT Vineeth Kashyap, Kyle Dewey, Ethan A. Kuefner, John Wagner, Kevin Gibbons, John Sarracino, BenWiedermann, Ben Hardekopf PAPER BACKGROUND Symposium on Foundations

More information

HashCache: Cache Storage for the Next Billion

HashCache: Cache Storage for the Next Billion HashCache: Cache Storage for the Next Billion Anirudh Badam KyoungSoo Park Vivek S. Pai Larry L. Peterson Princeton University 1 Next Billion Internet Users 2 Next Billion Internet Users Schools, urban

More information