【问题标题】:Xamarin Using API to Insert DataXamarin 使用 API 插入数据
【发布时间】: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


【解决方案1】:

你有 API 吗?在控制器的方法中添加属性 [Authorize]。或添加用户参数(他购买或不购买您的应用程序)。验证用户后在数据库中使用插入数据

【讨论】:

  • 我还没有尝试对这个特定项目使用 [Authorize]。仅适用于我过去完成的一些介绍教程。当我使用它时,它要求输入用户名和密码。但是,当成功购买后,我将如何使用它来启用产品呢?顺便说一句,我打算使用 Stripe 和 PayPal。
  • 1.用户名和密码。不好,2.电话号码和短信确认电话。当男人购买应用程序时 - 他是连接应用程序到电话号码。查看身份服务器
【解决方案2】:

出于某种原因不要使用这种方式。

  1. API 格式不正确。请参阅here
  2. 使用参数化查询、ORM 或存储过程来防止 sql 注入enter link description here
  3. 创建存储库层,然后在此处调用您的命令或查询表单

【讨论】:

  • 虽然这些都是有用的 cmets,但没有一个能真正解决他提出的问题
  • 谢谢@Jason,但她的问题不清楚
  • 感谢您的链接!但是,我现在正在考虑在 API 本身中处理付款。我应该提到的是我的数据库在 Azure 上。我假设他们有某种非常安全的收款服务。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多