什么是"声明性安全"?一般来说

Kdg*_*Dev 3 security

这个问题的答案:声明性安全 - 这是什么? 真的没有告诉我多少......并没有告诉我任何事情要直截了当.

我遇到了一个关于.NET性能的博客,它提到了这个:

你使用声明性安全吗?

在可能的情况下,建议您使用声明性安全性而不是强制性安全性检查.当前的需求实现通过当前正在构建的安全工具来提供更好的性能和支持,以帮助进行安全审计.

请注意,如果您的安全检查在方法中是有条件的,那么命令性安全性是您唯一的选择.

链接:http://weblogs.asp.net/sanjeevagarwal/archive/2009/09/09/net-code-performance-tips-part-1.aspx

"声明性安全"代表什么?有人能给出一个具体的例子吗?

har*_*rpo 9

声明性功能允许程序员在设计时表达意图.这些意图在语言的引擎内部强制执行 - 换句话说,我们看不到它是如何完成的.一个例子是属性:

[RequireDeletePermission]
public void DeleteFile( string fileName )
{
}
Run Code Online (Sandbox Code Playgroud)

声明声明DeleteFile方法不能在没有的情况下调用DeletePermission.(这是一个简单的示例.)运行时将为您强制执行此规则.不再需要代码.SQL权限也适合此类别.

使用自己的代码强制执行的策略称为命令式.您可以使用任何语言机制来完成此任务,但代码本身(与内置构造相对)表达了您的意图.当没有正式约束捕获所需的确切限制时,您将在SQL触发器中看到此类事物.

CREATE TRIGGER TR_UPD_fix_image_filename ON products AFTER UPDATE
AS
BEGIN
    UPDATE product SET image=itemnumber + '.jpg' WHERE id IN (SELECT id FROM inserted)
END
Run Code Online (Sandbox Code Playgroud)

(好吧,所以这是一个愚蠢的例子.通过设计,大多数典型案例都可以通过约束来处理.)