课程章节介绍
同学们,今天咱们来聊聊一个比较重要的更新——就是关于自定义Apex REST方法运行模式的变化。
从API 67.0版本开始,你写好的REST服务,默认就会在用户模式下运行了。那用户模式是什么意思呢?简单说,它会严格贯彻执行你这边的三项安全设置:对象权限、字段级安全,还有共享规则。
也就是说,如果当前用户没有某个对象的访问权限,或者看不到某个敏感字段,又或者共享规则不让他看到某条记录,那你的代码就会自动替他挡住,不会因为疏忽而泄露数据。这其实是个更安全的设计。
不过呢,有时候你可能确实需要在代码里临时绕开字段级安全的限制,那该怎么办?可以用一个叫做 `WHITE_MED` 的注解来声明。如果需要显式地在运行中检查权限,就可以用模式描述结果的相关方法。
再说到共享规则,默认也是强制执行的。如果你想绕过它,让代码能访问所有记录,那就把类声明为 `without sharing` 就可以啦。
这里要特别注意,API 67.0 的改变其实挺大的。以前,REST方法默认是在系统模式下运行的,很多类即使没有特别声明,也好像自带“无视共享规则”的效果。但现在反过来,默认就是最严格的用户模式,除非你明确声明成无共享类,否则代码就会像带着共享规则一样运行。
那么最佳实践是什么呢?很简单,三点:
第一,尽量利用好默认的用户模式安全机制,别主动降低安全门槛;
第二,如果代码要处理敏感数据,记得显式检查权限;
第三,永远别忘记验证所有来自外部的输入,防止注入和非法访问。
这样讲应该清晰了吧?记住,安全无小事,现在平台帮我们把默认值弄得更安全了,咱们写代码的时候也要把这些好习惯用起来。
关键词
Apex
Salesforce
Developer Guide