防止在线 SQL 查询的 SQL 注入
Preventing SQL Injection for online SQL querying
我有一个小型 Python 项目站点,访问者可以在其中练习编写 SQL 代码。此代码实际上 运行s 和 returns 值。我知道我需要防止 SQL 注入,但我不确定最好的方法,因为该站点的目的是用户应该能够针对真实数据库编写和执行任意 SQL 代码.
我应该怎么做才能防止恶意行为?我想阻止诸如 DROP xyz; 之类的语句,但用户应该仍然能够执行代码。我认为也许理想的解决方案是用户只能 "read" 来自数据库,即。他们只能 运行 SELECT 语句(或变体)。但我不确定 "read only" 是否捕获了所有恶意行为的边缘情况。
- 需要防止恶意SQL查询,还需要允许用户执行代码
- 现在使用 SQLite,但可能会转移到 postgres
- 目前我严格使用 SQL,但将来可能想添加 Python 和其他语言
- 该站点是使用 Python (Flask)
构建的
任何想法或建议都会有所帮助
对于将 SQL 语句作为用户输入并 运行 逐字输入的站点,无法阻止 SQL 注入。该站点的目的 是SQL 注入。防止 SQL 注入的唯一方法是不开发此站点。
如果您开发网站,如何防止恶意SQL?答:不要让恶意用户访问本网站。只允许受信任的用户使用它。
好的,我假设您确实想要开发该站点并且您确实希望允许所有用户,而不需要做很多工作来筛选他们。
然后它就变成了限制他们可以造成的潜在损害的任务。仔细限制他们的权限,使他们只能在特定模式中创建对象和 运行 查询。
或者更好的是,为每个人启动一个 Docker 容器以拥有自己的私有数据库实例,并限制容器可以使用的 CPU 和内存。
我有一个小型 Python 项目站点,访问者可以在其中练习编写 SQL 代码。此代码实际上 运行s 和 returns 值。我知道我需要防止 SQL 注入,但我不确定最好的方法,因为该站点的目的是用户应该能够针对真实数据库编写和执行任意 SQL 代码.
我应该怎么做才能防止恶意行为?我想阻止诸如 DROP xyz; 之类的语句,但用户应该仍然能够执行代码。我认为也许理想的解决方案是用户只能 "read" 来自数据库,即。他们只能 运行 SELECT 语句(或变体)。但我不确定 "read only" 是否捕获了所有恶意行为的边缘情况。
- 需要防止恶意SQL查询,还需要允许用户执行代码
- 现在使用 SQLite,但可能会转移到 postgres
- 目前我严格使用 SQL,但将来可能想添加 Python 和其他语言
- 该站点是使用 Python (Flask) 构建的
任何想法或建议都会有所帮助
对于将 SQL 语句作为用户输入并 运行 逐字输入的站点,无法阻止 SQL 注入。该站点的目的 是SQL 注入。防止 SQL 注入的唯一方法是不开发此站点。
如果您开发网站,如何防止恶意SQL?答:不要让恶意用户访问本网站。只允许受信任的用户使用它。
好的,我假设您确实想要开发该站点并且您确实希望允许所有用户,而不需要做很多工作来筛选他们。
然后它就变成了限制他们可以造成的潜在损害的任务。仔细限制他们的权限,使他们只能在特定模式中创建对象和 运行 查询。
或者更好的是,为每个人启动一个 Docker 容器以拥有自己的私有数据库实例,并限制容器可以使用的 CPU 和内存。