当前位置:  开发笔记 > 数据库 > 正文

SqlCommand如何清理参数?

如何解决《SqlCommand如何清理参数?》经验,为你挑选了1个好方法。

使用SqlParameters是一种推荐的方法来防止数据库查询中的SQL注入.在哪里可以找到内部消毒这些参数的代码/功能?我想在我的自定义实现中重用此功能.我试图使用Reflector找到它,但没有成功.



1> Joel Coehoor..:

它可以防止SQL注入,而不是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

与需要评估参数数据的函数相比,这更快,更安全,更健壮.这样的函数需要非常复杂(读取:容易出错)来处理自定义转义字符和未来增强功能.

这个整齐的一面解决了整个问题:数据是数据,代码是代码,而twain不会满足.


您对其他人的评论,现已删除,回答:

如果我传入值O'Rourke,它会将其编码为O''Rourke,这样它就不会破坏查询.正确?

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

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有