防止 C 语言中的 SQL 注入

发布于 2024-11-03 16:45:28 字数 343 浏览 5 评论 0原文

我正在编写一个 C 应用程序,它接受一些用户输入并执行一些数据库查询。我很清楚 SQL 注入的风险并希望防止它。

理想情况下,我会使用参数化查询,但到目前为止在 C 中还找不到任何具有此功能的内容。我目前正在构建我的查询:

char *query;
asprintf(&query, "UPDATE SomeTable SET SomeField='%s';", userInput);

如果我无法做到这一点,那么我必须需要过滤用户输入。这个过滤应该怎么做呢?仅仅删除所有 's 和 "s 就足够了吗?(有效输入不能包含它们)。如果是这样,在 C 中执行此操作的最简单方法是什么?

I am writing a C application that takes some user input and does a few database queries. I am well aware of the risks here of SQL injection and wish to prevent it.

Ideally I would use parameterized queries, but have been unable to find anything with this functionality in C so far. I am currently constructing my queries as such:

char *query;
asprintf(&query, "UPDATE SomeTable SET SomeField='%s';", userInput);

If I am unable to do this, then I must need to filter the user input. How should this filtering be done? Is it enough to just remove all 's and "s? (Valid inputs cannot contain them). If so, what is the easiest way of doing this in C?

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

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

发布评论

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

评论(1

堇色安年 2024-11-10 16:45:28

我相信您想使用准备好的语句和参数绑定。不要直接将用户数据插入到查询中。请参阅 MySQL 手册 获取相关信息。

I believe that you want to use prepared statements and parameter binding. Do not directly interpolate user data into your queries. See the MySQL manual for info on this.

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