【发布时间】:2022-01-02 07:26:09
【问题描述】:
我有一个 ASP.net Web API,可以在用户购买产品后插入我目前正在开发的 Xamarin 应用程序中的数据。但是,也可以通过简单地从台式计算机在网络浏览器上调用 URL 来插入数据,例如:
http://www.mywebapi.com/myfunc?username=bob&prod_enabled=true
我只希望在我的应用中购买产品后插入数据。在 Web API 的 C# 代码中,我有:
public IActionResult myfunc(string username, string prod_enabled)
{
// Assume credentials to connect to database are validated
using (SqlConnection connection = new SqlConnection(builder.ConnectionString))
{
SqlCommand cmd = new SqlCommand(
"INSERT INTO users (username, product_enabled) " +
"VALUES('" + username + "', '" + prod_enabled + "')", connection);
try
{
connection.Open();
int i = cmd.ExecuteNonQuery();
connection.Close();
if (i == 1)
return Content("True");
return Content("False");
}
catch (FormatException)
{
connection.Close();
return Content("False");
}
}
}
我的猜测是包含验证来自 Xamarin 应用程序的某种令牌的第三个参数,对吗?我真的很想确保人们不会使用 API 来伪造产品购买。需要有一些验证手段。
谢谢!
【问题讨论】:
-
“在他们购买产品之后”——这是什么意思?他们如何购买东西?通过你的 API?通过操作系统应用内购买?这里有很多或缺失的信息。
-
他们会使用 Stripe 支付或 PayPal 在 Xamarin 应用程序中购买产品。 API 仅用于写入数据库。我遵循了 PayPal 教程,实现起来很简单,但我没有注意到任何可以确保产品购买的东西。
-
我假设那些支付平台有一些机制来验证交易。但在不知道细节的情况下,我无法提出任何具体的建议。你需要花更多时间研究这个
标签: c# sql asp.net security xamarin.forms