gpt4 book ai didi

mysql - 这种 SQL 字符串格式化方法对于代码注入(inject)是否完全安全?

转载 作者:行者123 更新时间:2023-11-29 10:01:28 25 4
gpt4 key购买 nike

我想用 Java 或 C# 等语言创建 SQL 查询。大家都知道你不能这样做:

sql = "SELECT * FROM T WHERE A='" + someString + "'"

因为这允许代码注入(inject),例如:

someString = "xxx';DROP TABLE T;DECLARE @A CHAR(3) ='xxx"

众所周知,您必须使用大多数语言中可用的标准 API 提供的正确 SQL 参数。

但是由于某种太复杂而无法解释的原因(请假设我的理由是好的),我不能或不想使用正确的参数,并且需要坚持自己格式化字符串的危险方法。

我的问题很简单。以下安全吗:

 sql = "SELECT * FROM T WHERE A='" + someString.Replace("'","''") + "'"

如果您认为这取决于 RDBMS,请坚持使用 MySQL。

最佳答案

根本就不是。

我什至不会尝试创建一些可行的修改或建议,因为这是一个失败的案例。其中任何一个都会让你陷入虚假的安全感。

让我给您一个简短的链接列表来介绍您自己:

SQL Injection Cheat Sheet

...检查“If 语句”或“不带引号的字符串”部分

Bobby tables

以及各种SO问题:

What's the best method for sanitizing user input with PHP?

Which characters are actually capable of causing SQL injection in mysql

Does eliminating dangerous characters avoid SQL-injection?

How can I prevent SQL injection in PHP?

Does this code prevent SQL injection?

What characters have to be escaped to prevent (My)SQL injections?

Do htmlspecialchars and mysql_real_escape_string keep my PHP code safe from injection?

关于mysql - 这种 SQL 字符串格式化方法对于代码注入(inject)是否完全安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52853374/

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