【问题标题】:protect ajax & jquery injection保护ajax和jquery注入
【发布时间】:2013-06-22 19:36:01
【问题描述】:

如何防止注射? (jQuery & ajax)

<input type="text" id="name" name="name" /> 
<input type="text" id="email" name="email" /> 

var name = $("#name").val();
var mail = $("#email").val();

输出:

$("#logga").html('Name: <b>' + name + ' </b>Comment:<b> ' + comment + '</b>');

【问题讨论】:

  • 什么注射?
  • 使用 OAuth 保护网络服务。
  • 开发人员保护自己免受 PHP mysql(或其他数据库)注入的常见问题。以下是一些讨论:SOwikipediatizag。也许这就是你想知道的?

标签: jquery ajax code-injection


【解决方案1】:

无法使用 JavaScript 保护数据。因为客户端代码中的所有代码都可供攻击者使用。

但是您需要某种形式的身份验证,这样只有来自您的应用程序的真正请求才会返回数据;

喜欢阅读:How can I better protect my php, jquery, ajax requests from malicious users

【讨论】:

    【解决方案2】:

    如果您想确保姓名/电子邮件内容被正确转义以便显示,您可以先通过.text 运行它们,或者创建节点并将它们的值附加到.textContent

    var name = document.createElement('span');
    name.textContent = $("#name").val();
    $("#logga").html("Name: <b>" + name.textContent);
    

    【讨论】:

      【解决方案3】:

      您的意思是,用户不能损坏生成的 html 代码?然后你需要转义 html 实体:

      function htmlEntities(str) {
          return String(str).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
      }
      

      输出线:

      $("#logga").html('Name: <b>' + htmlEntities(name) + ' </b>Comment:<b> ' + htmlEntities(comment) + '</b>');
      

      【讨论】:

        猜你喜欢
        • 2012-05-05
        • 2011-05-04
        • 2017-10-21
        • 1970-01-01
        • 2014-02-15
        • 2015-08-20
        • 2016-01-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多