专栏首页salesforce零基础学习salesforce 零基础学习(四十七) 数据加密简单介绍

salesforce 零基础学习(四十七) 数据加密简单介绍

对于一个项目来说,除了稳定性以及健壮性以外,还需要有较好的安全性,此篇博客简单描述salesforce中关于安全性的一点小知识,特别感谢公司中的nate大神和鹏哥让我学到了新得知识。

项目简单背景:

假设有两个sObject,分别是A和B。B是A的子sobject。表单中元素显示的是B的相关字段,这些字段A中也全部包含。表单中包含了9个元素,点击提交的时候需要分成4组校验,每一组中只要有一个元素修改过,此组元素就需要全部按照特有的校验规则校验。此处的修改过代表输入框中的内容和A中的内容不一致,则视为修改,并且表单中2组和3组有两个字段涉及到用户隐私,不允许通过<input type="hidden">传递到前台.且此校验规则仅为前台校验,用于用户是否需要进行校验字段进行提交。

分析:(第一种开发人员很容易想到,能解决但是效率低且影响性能)

1.最开始考虑的是通过visualforce自带的remoting方式提交这两个字段,通过Visualforce.remoting.Manager.invokeAction提交到后台指定的方法去比较A表记录中的这两个值,如果和B中相同则不用校验2和3,如果有哪个不相同则在result中进行表单校验处理。此种方式坏处为从校验到提交需要请求两次,影响性能。

2.将2组和3组涉及隐私的字段值通过某种加密或者签名方式通过<input type="hidden"/>方式传到前台,前台输入框内容以同样规则的加密方法进行加密,此种加密方法不可逆,比较两个加密值,如果相等,则说明A和B中的值相等,不需要修改相应组块。

做法:

此处参考的链接如下:

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

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

1.apex端:controller端对两个字段值进行加密,加密可以选择很多加密模式,这里选择使用sha1方式,主要用到的类为Crypto,此类详情参看API。

主要代码:

1 Blob hashNumber = Crypto.generateDigest('SHA1',Blob.valueOf('the content you need to crypto')); 
2 String hashNumberCrypto = EncodingUtil.convertToHex(hashNumber);

将hashNumberCrypto通过隐藏于传到前台,则此字段可以作为A中字段进行比较

2.visualforce page端:主要通过SHA1的js库对前台的输入框内容进行加密,然后同隐藏于的A的字段进行比较

主要代码:

1 var hash = CryptoJS.SHA1("前台取到的dom元素对应的value");
2 console.log(hash.toString());
3 //The hash you get back isn't a string yet. It's a WordArray object.
4 //When you use a WordArray object in a string context,
5 //it's automatically converted to a hex string.

通过hash.toString()值以及hashNumberCrypto对应的隐藏域的值比较便可以更加安全的保护用户隐私同时解决用户提出的问题。

总结:此篇主要基于信息安全考虑实现前台两个sObject中相关字段校验问题,主要用到的是Crypto类相关知识,详情请查看对应的类的API,篇中有错误地方欢迎指正,有不懂的欢迎留言。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • salesforce 零基础学习(三十八)Translate 的使用(国际化处理)

    本篇参考:http://resources.docs.salesforce.com/200/17/en-us/sfdc/pdf/salesforce_workb...

    用户1169343
  • salesforce 零基础学习(二十五)PickList简单联动操作

    有的时候,项目需要一些联动的操作,比如省和市之间的联动,不同的省应该显示不同的城市。 操作步骤如下: 1.新建provice字段,并且初始化相关的值 ? 2.新...

    用户1169343
  • Salesforce Admin篇(四) Security 之Two-Factor Authentication & Single Sign On

    https://c1.sfdcstatic.com/content/dam/web/en_us/www/documents/white-papers/2fa-a...

    用户1169343
  • Yii2处理密码加密及验证

    在Yii2中提供了密码加密以及验证的一系列方法,方便我们的使用,它使用的是bcrypt算法。查看源码我们可以发现它使用的是PHP函数password_hash(...

    双面人
  • 西湖论剑回顾 | 网络安全创新成果分享之第三方加密安全创新

    2018年4月27日,“西湖论剑·网络安全大会”在杭州国际博览中心隆重举办。大会积极响应习近平总书记在全国网络安全和信息化工作会议上“敏锐抓住信息化发展历史机遇...

    安恒信息
  • ARM Cortex-M 系列 MCU错误代码自动追踪库的使用经验分享

    现象还原:在debug模式下进行仿真调试,全速运行再停止运行,程序会跑到 HardFault_Handler函数中,产生 HardFault,即硬错。其产生的原...

    Mculover666
  • ARM Cortex-M 系列 MCU错误代码自动追踪库的使用

    现象还原:在debug模式下进行仿真调试,全速运行再停止运行,程序会跑到 HardFault_Handler函数中,产生 HardFault,即硬错。其产生的原...

    正念君
  • 大数据24小时 | 东莞将建数据库扫清“僵尸企业”,日立制作所千亿日元设立物联网研发中心

    日立制作所投入千亿日元设物联网研发中心 推进大数据产业技术开发 ? 现如今,利用物联物技术来实现对工厂工作、管理的有效监控作已经成为了工业4.0时代的大势所趋。...

    数据猿
  • Chrome浏览器6个操作让你秒变技术大牛

    输入full,选择 capture full size screenshot 然后点击就会对当前网页进图并生成下载一个图片。这个比用 QQ 截图好用的地方就是有...

    不安分的猿人
  • 从一封情书来谈matlab高效编程

    大家看到推文标题第一眼作何感想呀?是不是以为小编要爆什么猛料,给大家讲些恋爱技巧之类的呀?要真有这么想的就等下次吧。

    艾木樨

扫码关注云+社区

领取腾讯云代金券