基于微软的这篇文章:
使用Blazor服务器托管模型,应用程序在ASP.NET Core应用程序中的服务器。UI更新、事件处理,并且通过SignalR连接来处理JavaScript调用。
在客户端渲染(Blazor WebAssembly(或各种javascript框架(如Anguarr、Vue…(的情况下,应该驻留在客户端的内容和不应该驻留的内容(在安全性方面(之间的分离相当明显;所有功能都应该通过API(例如REST(来处理,但我不确定Blazor服务器模型的情况如何。
把这样的代码放在剃须刀页面(例如Blazor服务器托管模型中的用户配置文件页面(中安全吗:
<input type="text" @bind="@user" />
<input type="text" @bind="@password" />
<button class="btn btn-primary" @onclick="ChangePassword">Save</button>
@code {
private string user { get; set; } = "";
private string password { get; set; } = "";
private void ChangePassword()
{
//DBConnection is the connection to a sample sqlite database
string statement = $"UPDATE users SET password = {password} WHERE user = {user};";
using var command = new SQLiteCommand(statement, DBConnection);
command.ExecuteNonQuery();
}
}
用户(客户端(会滥用上面的代码吗?
更新:我知道这里有SQL注入漏洞,这是故意的(在现实世界中,我肯定会参数化我的输入(。我的意思是,例如,即使代码如此脆弱,用户也可以进行SQL注入攻击吗?如果是,如何?
用户(客户端(会滥用上面的代码吗?
除非它们危及服务器,否则不会。组件中的所有代码都在服务器上的集线器会话中运行。SignalR流量是对浏览器的DOM更新,以及从浏览器到服务器的JS到C#的JSInterop调用。
另一方面,将应用程序中的所有Web程序集代码视为公共域。您的安全性在您的API上。