gpt4 book ai didi

php - 在没有 PDO 的情况下使用 PHP for SQL Server 防止 SQL 注入(inject)

转载 作者:可可西里 更新时间:2023-10-31 23:32:09 27 4
gpt4 key购买 nike

<分区>

我可以尽可能多地清理和验证我的输入,但这绝对不能涵盖所有内容,如果我足够努力、足够彻底地擦洗,我将完全删除我的输入。

我知道有很多关于这个主题的帖子,但似乎他们总是回到 PDO 或 Mysql(是的 - 即使有人发布有关 SQL Server 的帖子,他们收到的一半答案建议 mysql_real_escape_string -疯狂的世界)。我不能使用任何一个。即使在我打字时,屏幕右侧会出现一些“类似问题”,但我一直点击各种链接,但没有任何内容能完全回答我的问题。

我正在使用 SQL Server。我正在使用 PHP 5.2.4。我不能使用 PDO(因为......?我的老板说“不”,这已经足够了)。

有没有一种方法可以让我编写一种安全的方法来准备我自己的查询语句?

过去,我曾尝试在 PHP 中构建这样的语句。 (其中 $input_* 变量是某种形式的用户输入,或者我将它们从某些东西中提取出来)

$query = "
declare @varID int
declare @var1 int
declare @var2 varchar(100)

set @varID = cast('$input_ID' as int)
set @var1 = cast('$input_var1' as int)
set @var2 = cast('$input_var2' as varchar(100))

update table_name_goes_here
set var1 = @var1,
var2 = @var2
where ID = @varID;
";
# $query is then executed

但这也可能很脆弱......显然......我做的最后一件事是删除所有必要的标点符号(有时我知道他们没有理由使用某些字符)

但必须有其他选择……对吗? mssql_bind 仅适用于存储过程,这是一个明确的选择,但我不确定我是否愿意自愿扩大我的职责,通过制作插入/更新过程来包括对实际数据库的维护。

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