對于一個項(xiàng)目來說,除了穩(wěn)定性以及健壯性以外,還需要有較好的安全性,此篇博客簡單描述salesforce中關(guān)于安全性的一點(diǎn)小知識,特別感謝公司中的nate大神和鵬哥讓我學(xué)到了新得知識。

項(xiàng)目簡單背景:

假設(shè)有兩個sObject,分別是A和B。B是A的子sobject。表單中元素顯示的是B的相關(guān)字段,這些字段A中也全部包含。表單中包含了9個元素,點(diǎn)擊提交的時候需要分成4組校驗(yàn),每一組中只要有一個元素修改過,此組元素就需要全部按照特有的校驗(yàn)規(guī)則校驗(yàn)。此處的修改過代表輸入框中的內(nèi)容和A中的內(nèi)容不一致,則視為修改,并且表單中2組和3組有兩個字段涉及到用戶隱私,不允許通過<input type="hidden">傳遞到前臺.且此校驗(yàn)規(guī)則僅為前臺校驗(yàn),用于用戶是否需要進(jìn)行校驗(yàn)字段進(jìn)行提交。

 

分析:(第一種開發(fā)人員很容易想到,能解決但是效率低且影響性能)

1.最開始考慮的是通過visualforce自帶的remoting方式提交這兩個字段,通過Visualforce.remoting.Manager.invokeAction提交到后臺指定的方法去比較A表記錄中的這兩個值,如果和B中相同則不用校驗(yàn)2和3,如果有哪個不相同則在result中進(jìn)行表單校驗(yàn)處理。此種方式壞處為從校驗(yàn)到提交需要請求兩次,影響性能。

2.將2組和3組涉及隱私的字段值通過某種加密或者簽名方式通過<input type="hidden"/>方式傳到前臺,前臺輸入框內(nèi)容以同樣規(guī)則的加密方法進(jìn)行加密,此種加密方法不可逆,比較兩個加密值,如果相等,則說明A和B中的值相等,不需要修改相應(yīng)組塊。

做法:

此處參考的鏈接如下:

1.https://developer.salesforce.com/page/Apex_Crypto_Class

2.https://github.com/sytelus/CryptoJS

1.apex端:controller端對兩個字段值進(jìn)行加密,加密可以選擇很多加密模式,這里選擇使用sha1方式,主要用到的