gpt4 book ai didi

php - API 的安全 MySQL 查询

转载 作者:行者123 更新时间:2023-11-29 07:58:00 25 4
gpt4 key购买 nike

我正在为我的网络应用程序创建一个开源 API,用户将能够将其托管在网站上,使用此 API,用户将能够为自己的开源网站副本创建工具,并且下载并使用其他人的工具。对于 api,我正在考虑让用户使用 SQL 查询数据库,例如,如果他们想要获取某个内容的名称,他们会使用 JavaScript api 包装器进行 sql 查询,并将其发送到 PHP 文件来运行SQL 查询。出于安全目的。用户只能查询特定数量的表,并且每次查询都需要一个key

我想知道这种方法是否安全,因为我不希望我的用户像 SQL 注入(inject)一样被黑客攻击。

最佳答案

不允许用户通过 API 提交任意 SQL 查询。

如果您的 API 允许人们提交任意 SQL 查询或表达式,那么它是不安全的。有人可能会编写一个 SQL 查询来读取他不应该读取的数据,或者以破坏数据或授予不可预见的权限的方式更新数据。或者只是进行拒绝服务攻击。

以下是针对 SQL 注入(inject)漏洞风险编写安全 API 的一些建议(当然,设计 API 还存在其他安全问题)。

  1. 最好的安全性是 API 允许用户提交 key 的值,然后您的 PHP 脚本将使用查询参数将该值绑定(bind)到 SQL 查询中在 PHP 代码中硬编码(带有参数占位符)。

  2. 下一个最佳安全性是客户端可以从多个 SQL 查询中进行选择,这些查询仍然硬编码在您的应用程序中。客户端为他们想要使用的预先批准的查询指定一些标识符。

  3. 如果您需要允许 API 客户端设计自己的查询,那么下一个最佳安全性是,您应该创建 domain-specific language (DSL),以便您的 PHP 应用程序可以验证客户端是否正在提交您认为可以运行的查询。另请参阅Writing Domain Specific Languages

关于php - API 的安全 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24598823/

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