orm - 如何安全地删除记录?
问题描述
语境
我创建了一个处理待办事项的应用程序。我希望能够根据从 url 获得的 id 删除待办事项
import vweb
struct App {
vweb.Context
}
[post]
["/todo/:id/delete"]
pub fn (mut app App) delete_todo_response(id string) vweb.Result {
db := sqlite.open("dist/database.db") or {
return app.redirect("/todo")
}
db.exec_none('DELETE FROM todo WHERE id = $id') // id is not escaped
}
fn main() {
vweb.run<App>(80)
}
问题
如您所见,id 没有被转义。我觉得这不是做到这一点的理想和安全的方式。
问题
- 如何使用
exec()
,exec_one()
或来转义值exec_none()
? - ORM 是否能够基于结构为我删除记录,就像选择和插入一样?
解决方案
据我所知,没有标准的方法来逃避 sqlite 查询。但是,您确实可以使用 ORM。如果你声明你的 Todo 结构,应该这样做:
sql db {
delete from Todo where id == id
}
推荐阅读
- azure-ad-b2c - 内置字段不会显示在真实设备上
- python - 如何在保持相同大小的同时对图像进行下采样
- git - 同一解决方案上的 Visual Studio 不同 git 存储库
- python - 使用 SessionAuthentication 缺少“sessionid”cookie
- python - 如何评估 Python 中的对象检测?
- javascript - 将 chrome 控制台的交错输出存储到单个变量中并复制它
- c - 我想在 Windows 10 (Cygwin) 中安装 gcc-g++ 3.3x
- python - 如何让我的“说”命令删除命令消息,同时保留机器人的消息?(discord.py)
- c++ - 如何从内存中访问特定值
- wordpress - 我正在寻找一个购买插件