gpt4 book ai didi

c# - 这个SQL查询,注入(inject)安全吗

转载 作者:行者123 更新时间:2023-11-30 14:27:57 25 4
gpt4 key购买 nike

我认为初始代码没问题:

SqlCommand param = new SqlCommand();
SqlGeometry point = SqlGeometry.Point(center_lat,center_lng,0);
SqlGeometry poly = SqlGeometry.STPolyFromText(new SqlChars(new SqlString(polygon)),0);
param.CommandText = "INSERT INTO Circle (Center_Point, Circle_Data) VALUES (@point,@poly);";
param.Parameters.Add(new SqlParameter("@point", SqlDbType.Udt));
param.Parameters.Add(new SqlParameter("@poly", SqlDbType.Udt));
param.Parameters["@point"].UdtTypeName = "geometry";
param.Parameters["@poly"].UdtTypeName = "geometry";
param.Parameters["@point"].Value = point;
param.Parameters["@poly"].Value = poly;

但是我意识到在创建 polygon 字符串时可能会出现问题。

在 javascript 中——我是这样创建的:

var Circle_Data = "POLYGON ((";
for (var x = 0; x < pointsToSql.length; x++) { // formatting = 0 0, 150 0, 150 50 etc
if (x == 360) { Circle_Data += pointsToSql[x].lat.toString() + " " + pointsToSql[x].lng.toString() + "))"; }
else { Circle_Data += pointsToSql[x].lat.toString() + " " + pointsToSql[x].lng.toString() + ","; }
}

然后传递给 C#。那么这样安全吗?即使在查询中发生了参数化?

最佳答案

使用参数,您将从 SQL 注入(inject)中保存,如果在 POLYGON 字符串中注入(inject)某些 SQL,它会在 SQL Server 端出错。

例如,如果您有:

POLYGON(12.33 12.55,13.55; DROP TABLE students;)

SQL Server 将尝试根据传递的字符串构造几何类型,但这样做会失败。

关于c# - 这个SQL查询,注入(inject)安全吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30712017/

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