如何使JSP的Servlet调用更安全?

时间:2013-03-15 03:29:58

标签: java javascript jquery jsp kendo-grid

我有一个包含很少组合框的JSP页面,一个网格和一个用于刷新网格的按钮。每当用户按下刷新按钮时,JSP页面就会调用servlet,根据组合框中的值执行查询并使用新检索的数据刷新网格。

所以在Javascript中,这或多或少都是我正在做的事情:

<script>
    function getSRCHGTData() {
        $.get('api/ServletTest', function(data) {
            alert(data);
        });

        var comboBox = $("#cb_cus_cd").data("kendoComboBox");

        var grid = $("#grid_SRCHGT").data("kendoGrid");
        grid.dataSource.transport.options.read.url = "api/srchgt_read?cus_cd=" + comboBox.value();

        grid.dataSource.read();
        grid.refresh();
    }
</script> 

对我来说传递类似的参数似乎并不安全,因为人们可以轻松查看servlet的url并执行SQL注入。

如何使通话更安全?

编辑:详细说明:在查询数据库(清理输入,准备语句等)之前,servlet已经完成了验证输入的共享。我更担心的是我在通过URL调用servlet时暴露参数(例如,他们可以从下面看一下cus_cd参数)

3 个答案:

答案 0 :(得分:1)

SQL注入不应该成为一个问题。这可以在数据库层上避免。我的意思是你可以使用PreparedStatement来避免SQL注入攻击。

看看这里,Preventing SQL Injection in Java

答案 1 :(得分:1)

您不应该尝试使呼叫更安全,因为用户可以随时嗅探它们,并且确定的攻击者可能会突破混淆。您需要确保服务本身是安全的。 (即具有适当的身份验证,授权和适当的清理输入。)

答案 2 :(得分:0)

简单地告诉Do-Not-Rely and Trust-on-Client-Side-Validation

最好通过过滤器传递所有servlet并检查是否存在正确的身份验证。