gpt4 book ai didi

database - 如何避免 SQL 注入(inject)攻击?

转载 作者:太空狗 更新时间:2023-10-30 01:43:42 27 4
gpt4 key购买 nike

昨天我和一位开发人员交谈,他提到了一些关于限制数据库字段插入的内容,比如 -- 等字符串。 (减号)。

在同一类型中,我所知道的是转义 HTML 字符(如 <)的好方法。 , >等不-- .这是真的?我是否需要担心 -- , ++ ?它更像是一个神话还是古老的东西?


更新

非常感谢所有的回答,这样很容易理解,因为我对所有这些都是新的。好吧,在这种情况下更具体地说,我们的讨论是关于我们正在开发的 C# ASP.NET MVC 网站,所以那里有一个复杂的开户表格,其中包含重要信息,所以我不确定 MVC 是否使用 Linq 来与数据库的接口(interface)已经带有或没有这种保护。所以如果有人能提供一些关于它的提示,那就太好了。再次感谢

最佳答案

避免 SQL 注入(inject)攻击的正确方法不是简单地禁止某些有问题的字符,而是使用参数化 SQL。简而言之,参数化 SQL 可防止数据库执行原始用户输入作为 SQL 命令的一部分,这可防止执行诸如“drop table”之类的用户输入。仅转义字符并不能阻止所有形式的 SQL 注入(inject)攻击,并且排除某些单词(例如“Drop”)并非在所有情况下都有效;在某些字段中,“丢弃”是数据输入中完全有效的部分。

您可以在这里找到一些关于参数化 SQL 主题的好文章:

https://blog.codinghorror.com/give-me-parameterized-sql-or-give-me-death/

http://www.codeproject.com/KB/database/ParameterizingAdHocSQL.aspx

既然您提到您正在使用 ASP.net,我可以为您提供一些专门处理 ASP 中的 SQL 注入(inject)的链接。

https://dzone.com/articles/aspnet-preventing-sql-injectio https://www.c-sharpcorner.com/UploadFile/75a48f/how-sql-injection-can-be-possible-in-asp-net-websites/

这是一篇关于使您的 ASP 更安全的更一般的文章: http://www.codeproject.com/KB/web-security/Securing_ASP_NET_Apps.aspx

当然还有关于 SQL 注入(inject)的 MSDN 文章: http://msdn.microsoft.com/en-us/library/ms998271.aspx

关于database - 如何避免 SQL 注入(inject)攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2200256/

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