【问题标题】:Can SQL Injection happen when using Knockout.js?使用 Knockout.js 时会发生 SQL 注入吗?
【发布时间】:2017-07-11 08:09:22
【问题描述】:

我需要在网站中演示 SQL 注入,但是我的网站使用 knockout.js 数据绑定来接收类型为 POST 和数据类型为 JSON 的 AJAX 对象。

一个例子是:

<script src="http://knockoutjs.com/downloads/knockout-2.3.0.js"></script>
<div data-bind="value:  details().Name" />
<script> 
    ko.applyBindings();
</script>

这样的表单提交会发生SQL注入吗?如果是这样,它怎么会发生?您能否举例说明输入将如何删除所有行?

例如正常的 SQL 注入将是

a'; DROP TABLE users;

这怎么会发生在我的网站上?

【问题讨论】:

  • “我需要在网站中演示 SQL 注入” 您在网站上使用的技术无关紧要:只需发送定制的 POST,完全绕过 KO 和您的JavaScript 代码。 server 代码需要不受 SQL 注入攻击;您的客户端代码无法阻止它。
  • 作为旁注,我更喜欢为客户端的验证设置相应的服务器端验证...

标签: json ajax knockout.js


【解决方案1】:

必须在服务器端防止 SQL 注入。

客户端发生的任何事情都无关紧要。

安全审计公司可能会使用您的界面,但他们更有可能使用其他工具向您的站点发送 HTTP 查询,从而绕过您的前端。

【讨论】:

    【解决方案2】:

    您的网站是否使用了 Knockout 或任何其他前端框架,与它是否存在 SQL 注入漏洞完全无关。无论您的应用程序正在运行什么 SQL 查询,都由您的前端连接到的 API 生成。

    为了正确测试 API 的 SQL 注入漏洞,您需要使用自己的 JSON 有效负载手动制作自定义 HTTP 请求,以尝试确定是否有任何字段易受 SQL 注入攻击。这是因为您的 API 的输入可能比通过 UI 直接公开的输入要多得多,因此通过测试 UI 并不能完全覆盖您的系统。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-20
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 2018-03-29
      • 1970-01-01
      • 1970-01-01
      • 2019-10-19
      相关资源
      最近更新 更多