gpt4 book ai didi

.net - SqlCommand 如何清理参数?

转载 作者:行者123 更新时间:2023-12-04 02:51:28 25 4
gpt4 key购买 nike

使用 SqlParameters是防止数据库查询中的 SQL 注入(inject)的推荐方法。我在哪里可以找到内部清理这些参数的代码/函数?我想在我的自定义实现中重新使用这个函数。我尝试使用 Reflector 找到它,但没有成功。

最佳答案

它可以防止 SQL 注入(inject),而不是 XSS,和 没有代码或函数清理参数数据。

保护是通过将参数值与查询字符串分开传输到服务器来完成的,因此这些值永远不会直接替换到 sql 语句中。

所以不是运行这样的sql server:

SELECT * FROM [table] WHERE [column] = ParameterValue

它更像是这样运行的:
DECLARE @ParamValue int
-- //@ParamValue variable is populated from the framework in a safe way
SELECT * FROM [table] WHERE [column] = @ParamValue

这比必须评估参数数据的函数更快、更安全、更健壮。这样的函数需要非常复杂(阅读:容易出错)才能处理像 custom escape characters 这样的事情。和 future 的增强。

这巧妙地绕过了整个问题:数据就是数据,代码就是代码,两者永远不会相遇。

您对另一个(现已删除)的评论回答:

If I pass in the value O'Rourke, it encodes it to be O''Rourke so that it doesn't break the query. Correct?



不,这是不正确的。该变量是直接从数据 block 创建的,因此不需要特殊的转义或编码。

关于.net - SqlCommand 如何清理参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/926142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com