I assume your question is more specifically about the implications of not using
Security.stripInaccessible method for all DML in an internally developed code, but the last point in your post seems question the general importance of FLS (at least that is how I understood your question initially). While the comments on your post have been mostly on the importance of FLS & the related business context, I guess you already have a clear understanding about it in Salesforce context. I feel this question may get tagged as opinion-based.
I see more and more information about the importance of performing FLS
checks before SOQL and DML operations, using the
Security.stripInaccessible method, e.g. in the Winter '21 PD1
certification maintenance exam.
IMO, Salesforce isn't implying anything different than the importance of standard FLS check practice, in general.
where the FLS model has been put in place by admins/developers and
code written and tested with the business context in mind.
I interpret this as not just having FLS in place and application tested out, but also the standard FLS check mechanism (using
DescribeFieldResult) in place. Since you already have standard FLS check in place, I don't think there are any major risks involved in not having FLS check on all DML (using
Security.stripInaccessible method). Not having any form of FLS check in the code is a very sensitive issue and should be avoided. FLS check has to be performed with due-diligence of business context and with a clear understanding of the apex methods being used. For example, the valid use-case you have pointed out in your comment is a good place to avoid FLS check.
WITH SECURITY_ENFORCED are possibly an outcome of this idea, which you might have already seen. I see them as just better ways to code FLS check when compared to the previous standard ways.
Security.stripInaccessible just makes the coding FLS check a bit easier. For example, to allow 10 different users (with different set of FLS access) to insert a SObject, one would have to do it either of the following ways:
- Write wrapper or service layer code to handle the FLS access, create appropriate collections (stripping away inaccessible fields) & then perform DML using the collections.
- Write a really lengthy code using
DescribeFieldResult to check FLS, perform DML and handle exceptions.
Security.stripInaccessible method for the same would make the code really shorter implicitly handling the exceptions gracefully.