Javascript 避免篡改CRM表单中的只读字段

Javascript 避免篡改CRM表单中的只读字段,javascript,dynamics-crm,Javascript,Dynamics Crm,我们在CRM中实现了一个内部项目管理/考勤模块,主要是在JS中 最近,我们开始面临数据问题,因为我们的同行开始使用CRM JS Fiddle等浏览器附加组件编辑/篡改只读字段,以启用字段 我们通过用户培训避免了这种情况&启用审计以查看用户行为。仍然有新加入者探索这一选择&迫使我们进行微观管理 我们是否可以采取一些防故障措施来永久避免此缺陷?好奇地想实现阻止篡改的最佳方法。欢迎提出意见 选项1:要使用预验证插件拦截请求,请跳过这些字段进行更新 选项2:将所有计算逻辑移动到服务器,或使用计算字段等

我们在CRM中实现了一个内部项目管理/考勤模块,主要是在JS中

最近,我们开始面临数据问题,因为我们的同行开始使用CRM JS Fiddle等浏览器附加组件编辑/篡改只读字段,以启用字段

我们通过用户培训避免了这种情况&启用审计以查看用户行为。仍然有新加入者探索这一选择&迫使我们进行微观管理

我们是否可以采取一些防故障措施来永久避免此缺陷?好奇地想实现阻止篡改的最佳方法。欢迎提出意见

选项1:要使用预验证插件拦截请求,请跳过这些字段进行更新

选项2:将所有计算逻辑移动到服务器,或使用计算字段等


[我不知道它是否脱离主题,基于意见。仍然希望看到很少的响应]

当试图计算、验证或保护CRM表单上的数据时,“肯定会出现问题

避免这种情况的一些选择是:

  • 用于将字段设置为只读
  • 使用常规安全模型将整个记录设置为只读
  • 使用操作前插件步骤或同步工作流执行计算和/或验证数据
  • 虽然这不会防止出现问题,但您可以编写工作流,在用户编辑应为只读的字段时通知管理员
  • 可以使用JavaScript将字段设置为永不提交。我还没有测试上帝模式是否会覆盖它,但由于它是一个基于表单的解决方案,我们必须假设一个有动机的用户能够找到如何覆盖它

    Xrm.Page.getAttribute("new_field").setSubmitMode("never");
    
    我个人的结论和实践是,数据相关任务依赖插件和自定义工作流,而不是JavaScript和业务规则。这有一个有益的副作用,即如果我们导入数据而不是在表单上输入数据,逻辑也会起作用

    如果可能的话,我会尝试只对表单布局任务使用JavaScript和业务规则

    如果确实使用JavaScript在表单上显示用户即时计算结果,则可能需要在插件中复制逻辑

    另一个想法(我自己没有做过)是在只读字段中添加onChange事件。该事件可以重新计算正确的值,从而挫败用户的努力

    例如,假设您有3个字段:价格、数量和总额。 价格和数量可编辑,合计为只读


    价格和数量发生变化时触发的正常计算是将价格*数量填充到总数中。好的,当全部更改时,您可以启动相同的计算,这将立即用正确的值覆盖任何用户输入。

    您可能无能为力,有些人甚至不需要表单或浏览器将数据发送到您的服务器,这就是为什么来自客户端的数据永远不可信!我想知道,如果企业开始探索浏览器工具栏之类的开发工具并覆盖UI数据,会怎么样。。我同意我们无能为力。。