【问题标题】:handle Querystring with jQuery or in APSX page使用 jQuery 或在 ASPX 页面中处理查询字符串
【发布时间】:2011-02-16 12:44:04
【问题描述】:

我有以下查询字符串(其中 kvks 是动态的):

http://api.openkvk.nl/json/SELECT bedrijfsnaam FROM kvk WHERE kvks = 27312152 LIMIT 1;

如果执行此查询字符串,它将返回 json 数据。 处理此问题的最佳方法是什么?我用这种方式试过了,但没有任何警报

url.append("http://api.openkvk.nl/json/SELECT bedrijfsnaam FROM kvk WHERE kvks = ");
url.append(Dossierno);
url.append(" LIMIT 1");

$.get(url, function (data) {
            alert(data); });

或者我应该在单独的 aspx 页面中处理这个问题?

$.get('getaddress.aspx', { sDossierno : Dossierno} function (data) {
            alert(data); });

如果是,如何发送查询字符串并在 getaddress aspx 页面上返回 json 对象?

【问题讨论】:

  • 在查询字符串中传递纯文本查询是一个非常糟糕的主意...搜索 SQL 注入。编辑 - 或者是某种处理安全方面本身的外部自定义查询 API?外部与否,看起来仍然很糟糕。
  • 总之,我会从kvk执行api.openkvk.nl/json/delete

标签: jquery asp.net c#-4.0 query-string


【解决方案1】:

这不是您拥有的查询字符串。它是 uri 的一部分,而 ASP.NET 可能不会允许它。您可以尝试以下方法:

$.get( 
    'http://api.openkvk.nl/json', 
    { q: 'SELECT bedrijfsnaam FROM kvk WHERE kvks = ' + Dossierno + ' LIMIT 1' }, 
    function (data) {
        alert(data); 
    }
);

其中相应的服务器端脚本将读取q 查询字符串参数。

另外,我希望您了解拥有服务器端脚本的安全性含义,该脚本接受看似 SQL 查询的内容并针对关系数据库执行它。最后但并非最不重要的一点是不要忘记same origin policy restriction,如果您打算向它发送 AJAX 请求,请确保此脚本托管在 http://api.openkvk.nl 上。

【讨论】:

    【解决方案2】:
    • 不要在查询字符串中传递整个 SQL 查询,因为它允许恶意代码访问您的数据库。
    • 字符串变量没有 append 方法,所以检查它是否真的按预期工作(提醒 url 看它是否是你所期望的)
    • 不允许您从其他域发出请求(如果您的页面不在 api.openkvk.nl),则仅允许 JSONP 跨域。检查same-origin-policy

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-09
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      • 1970-01-01
      相关资源
      最近更新 更多