gpt4 book ai didi

postgresql - 不能 100% 确定这是否安全

转载 作者:行者123 更新时间:2023-11-29 14:25:43 33 4
gpt4 key购买 nike

鉴于以下 PostgreSQL 代码,我认为这段代码不容易受到 SQL 注入(inject)攻击:

_filter 'day'
_start 1
_end 10
_sort 'article_name'
_order 'ASC'

RETURN QUERY EXECUTE '
SELECT *
FROM articles a
WHERE article_name ILIKE ''%' || $1 || '%''
ORDER BY $4 ' || $5 || '
LIMIT ($3-$2) OFFSET $2'
USING _filter, _start, _end, _sort, _order;

但我没有找到太多关于 USING 子句与字符串组合的文档。我确实在 DBA 上找到了这篇不错的文章(接受的答案):https://dba.stackexchange.com/questions/159424/how-to-use-function-parameters-in-dynamic-sql-with-execute我认为我已经正确实现了

最佳答案

这段代码不会做你想做的事。

$1 将替换为第一个函数参数替换为 _filter

此外,这对 SQL 注入(inject)是开放的。

这就是你想要的:

RETURN QUERY EXECUTE
format(
E'SELECT *\n'
'FROM articles a\n'
'WHERE article_name ILIKE %L\n'
'ORDER BY %I %s\n'
'LIMIT %s OFFSET %s',
'%' || _filter || '%',
_sort,
_order,
_end - _start,
_start);

关于postgresql - 不能 100% 确定这是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58269459/

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