担心 Winforms 项目中的 SQL 注入有什么意义吗?

发布于 2024-08-17 19:42:26 字数 273 浏览 5 评论 0原文

在 SO 和其他地方,如果没有人礼貌地指出最好使用参数化输入和存储过程,则几乎不可能在示例代码中发布长连接的 SQL 指令。

最近的示例 在这里

但是担心 Winforms 项目中的 SQL 注入有意义吗?

In SO and elsewhere it's nearly impossible to post long concatenated SQL instructions in sample code without someone politely pointing out that it's better to use parameterized input and stored procedures.

Recent example here.

But is it meaningful to worry about SQL injection in a Winforms project?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

无所谓啦 2024-08-24 19:42:26

有什么理由编写安全的数据库代码吗?我不这么认为。

每个人都应该养成安全执行 SQL 的习惯,这样你在编写公共应用程序时甚至不必考虑它。

还要考虑到许多原本打算保密的代码最终将在几个月或几年后变得可供公开访问。例如,“嘿,这个用于库存报告的内联网应用程序很有用,为什么我们不将其上传到我们的公共网站以供我们的业务合作伙伴使用?”

  • 使用参数将未经验证的数据与 SQL 查询分开。
  • 您可以将经过验证的数据插入到 SQL 查询中。也就是说,如果您有代码来测试变量只能是整数(例如),那么将其视为整数是安全的。
  • 对于查询的其他动态部分(表名、列名、表达式等),您不能使用查询参数。但您可以将用户输入映射到硬编码字符串。例如,如果用户输入 1,则按 date 列排序。如果用户输入 2,则按 status 列排序。
  • 忽略那些说“只使用存储过程!”的程序员。好像这与防御 SQL 注入有关。事实并非如此。

Is there some reason not to write safe database code? I don't think so.

Everyone should get into the habit of executing SQL safely, so you won't even have to think about it when you write public apps.

Also consider that a lot of code that's intended to be private will end up becoming accessible publicly months or years later. For example, "hey this intranet app for inventory reporting is useful, why don't we upload it to our public website for our business partners to use?"

  • Use parameters to separate unvalidated data from the SQL query.
  • You can interpolate validated data into SQL queries. That is, if you have code to test that a variable can only be an integer (for example), then it's safe to treat it as an integer.
  • For other dynamic parts of a query (table names, column names, expressions, etc.) you can't use query parameters. But you can map user input to hardcoded strings. E.g. if user enters 1, then sort by date column. If user enters 2 then sort by status column.
  • Ignore programmers who say "just use stored procedures!" as though that has anything to do with defense against SQL injection. It doesn't.
软的没边 2024-08-24 19:42:26

现实生活中的史诗故事:中西部公司的老大来查看项目进展。不知道这是怎么发生的,但不知何故,调度办公室为一位从未见过的客户下了一组新订单。大约在老板过来查看的时候就开始生产了。他的姓氏是奥肖内西。

使用参数化输入不仅仅可以避免 SQL 注入。

Epic tale from real life: the Big Boss of the mid-western company came to take a look at project progress. Not sure how it happened, but somehow a new set of orders came down from the scheduling office for a customer never seen before. And went into production around the time the Boss came to have a look. His last name was O'Shaughnessy.

Using parameterized input is good for more than just avoiding SQL Injection.

老娘不死你永远是小三 2024-08-24 19:42:26

是的,出于您在其他项目中看到的所有原因。

您的用户群可能较小,但也存在同样的危险。

Yes it is, for all the reasons you've seen on other projects.

Your user base may be smaller but the same dangers are there.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文