将xml文档作为SqlServer中存储过程的参数传递是否安全?

时间:2016-02-17 11:37:40

标签: c# sql xml

在存储过程中传递xml之前需要我做一些额外的检查(使用c#)?

1 个答案:

答案 0 :(得分:1)

不知道你将要做什么,只有一般性的想法:

将XML从C#应用程序传递到存储过程意味着传输字符串。该字符串在进入SP时就会转换为XML(如果参数声明为XML)。只要您的XML有效,这应该可行。

1)如果要确保在此过程中无法更改此字符串:您可以在应用程序中创建哈希代码,并在SP中检查此哈希码。此哈希代码可以嵌入到XML中,或者作为附加参数传输,或者与ID一起转移到额外的进程中以获得额外的安全性。

2)您希望确保XML是有效的:只要您在C#中使用“真正的”XML对象并且不使用StringBuilder或类似的方法创建XML,就不需要额外的努力。

3)您希望确保您的XML遵循专用架构:使用XSD检查您的XML是否在结构上填满了“合同”。您可以在应用程序或SQL Server或两者中执行此操作。