使用ajax get方法加载网站信息是否安全?

时间:2016-05-24 01:53:13

标签: javascript php jquery ajax security

我有一个html页面,我需要从DB加载一些常用信息(可以被所有人看到)。

所以我把这段代码放在html中:

<script type="text/javascript">
    $(document).ready( function() {
        setTimeout( "getRate()", 100 );
    });

    function getRate() {
        $.ajax( {
            type: "GET",
            url: "api.php",
            dataType: "json",
            data: {call: 'getRate'},
            success: function(result){

               //set result to the DOM element....

            },
            error: function(){

            }
        });
    }
</script>

我有一个像这样的api.php文件:

<?php

if($_SERVER['REQUEST_METHOD']=="GET") {
    $function = $_GET['call'];
    if($function == "getRate") {
       //get result from DB

        echo json_encode(result);
    }
}

但是我的代码审核员说当把这个url直接放在浏览器中&#34; https://****.com/api.php?call=getRate&#34;时,它也返回了json结果,是否安全?

没有ajax调用请求的秘密信息,所以 它我认为没关系,但我不确定。

这样做会有安全隐患吗?

1 个答案:

答案 0 :(得分:1)

如果您的问题是AJAX本身是否安全,那么是的,AJAX一直用于在浏览器和远程API之间交换信息。

至于具体的代码,这里似乎没有提供的漏洞:

  1. 原始JSON响应确实没有任何机密信息
  2. 如果有人试图将call: getRate参数设置为恶意攻击,则用于生成JSON的SQL查询(或等效项)不易受到注入攻击。
  3. AJAX调用不会改变数据库的状态
  4. AJAX调用不会占用非常少量时间的资源。例如,某人发送垃圾邮件https://****.com/api.php?call=getRate不应该关闭该网站。