sql - 当互联网应用程序的输入是 SQL 语句的一部分时,会有哪些安全问题?
问题描述
我正在准备分布式系统的考试,我正在努力解决以下问题:
您已经为用户条目编写了一个使用 html 输入元素的 Internet 应用程序。用户输入是 SQL 语句的一部分。关于安全,您应该注意什么?解释解决方案和问题。举个例子。
有没有人熟悉这种情况并可以提供帮助?
解决方案
这是一种常见的网络黑客技术,称为SQL 注入
SQL注入通常发生在您要求用户输入时,例如他们的用户名/用户ID,而不是名称/ID,用户给您一个SQL语句,您将在不知不觉中在您的数据库上运行。
如果没有保护,就有可能获取用户名和密码或删除整个数据库。有关示例,请参见https://www.w3schools.com/sql/sql_injection.asp
对于保护,您可以使用以下技术:
- 1:使用准备好的语句(带有参数化查询)
- 2:存储过程的使用
- 3:白名单输入
- 4:转义所有用户提供的输入
有关更多信息,请参阅:https ://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html
推荐阅读
- mysql - 子查询中的 Django 计数行
- c# - 使用 C# 访问嵌套 JSON 中的值
- google-apps-script - 用于设置当前日期的 Google 电子表格脚本
- sql - SQL datetime2(7) 字段到 Django
- javascript - vega-lite 和 vuejs - 关闭工具提示
- typescript - 如何将 SVG 从 typescript 自定义包导出到 React Native Project
- java - 从具有多列的 TreeItem 获取整行作为字符串数组
- c - 使用变量作为文件名写入C中的文件
- python - 如何使用“json”模块在 Plotly 中实现一个带有 json 类型数据的表?
- css - 如何在css中设置span中的分词