C# Axapta.ExecuteStmt-安全吗?

C# Axapta.ExecuteStmt-安全吗?,c#,axapta,ax,C#,Axapta,Ax,我有一些代码,在使用Business Connector时在Axapta对象上使用ExecuteStmt方法,如下所示: AxaptaRecord record = (AxaptaRecord)ax.CreateAxaptaRecord("SalesTable"); record.ExecuteStmt("select * from %1 where %1.SalesId == '" + id + "'"); while (record.Found) { // do stuff }

我有一些代码,在使用Business Connector时在Axapta对象上使用ExecuteStmt方法,如下所示:

AxaptaRecord record = (AxaptaRecord)ax.CreateAxaptaRecord("SalesTable");
record.ExecuteStmt("select * from %1 where %1.SalesId == '" + id + "'");
while (record.Found)
{
     // do stuff
}

这很好,但它将出现在一个面向公众的网站上,那么这是一种访问数据的好方法吗?它是否安全,不受SQL注入的影响?因为我已经读到这条语句将使用“forcePlaceholders”关键字,它将参数化查询,因为它不包含联接?

我会说不。这仍然会导致sql注入。

你说得对,我刚刚尝试了一个“友好的”通过传递进行SQL注入:S215*“| |%1.SalesId类似于”*S209作为id,它返回所有S215和所有S209结果,然后查看答案:
id
来自哪里?我有没有可能把它改成
;落桌学生--