【问题标题】:What is the equivalent of MS-SQL `QUOTENAME` in `DB2``DB2`中MS-SQL`QUOTENAME`的等价物是什么
【发布时间】:2020-01-07 03:23:48
【问题描述】:

我从 MS-SQL 更改为 DB2。程序中有一些QUOTENAME 方法来防止sql-injection。 DB2 中是否存在这样的函数?

【问题讨论】:

    标签: sql db2 database-migration


    【解决方案1】:

    恐怕你误解了QUOTENAME的目的——不是“防止SQL注入”;它是“to make the input string a valid SQL Server delimited identifier。”

    由于在 Db2 中(我相信在标准 SQL 中)引用标识符的唯一方法是将其括在双引号中,因此您可以使用 REPLACE 函数轻松实现相同的功能:

    create function quotename (input varchar (128)) returns varchar(128)
    return '"' || replace(input, '"', '""') || '"'   
    

    【讨论】:

    • 公平地说,quotename 有助于防止 SQL 注入:sommarskog.se/dynamic_sql.html#quotestring
    • 用它来“防止 SQL 注入”只会给你一种错误的安全感,因为它一次只能解决一个边缘情况。应该使用适当的技术来对抗 SQL 注入,例如参数绑定。
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多