我有一个包含很少组合框的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参数)
答案 0 :(得分:1)
SQL注入不应该成为一个问题。这可以在数据库层上避免。我的意思是你可以使用PreparedStatement
来避免SQL注入攻击。
答案 1 :(得分:1)
您不应该尝试使呼叫更安全,因为用户可以随时嗅探它们,并且确定的攻击者可能会突破混淆。您需要确保服务本身是安全的。 (即具有适当的身份验证,授权和适当的清理输入。)
答案 2 :(得分:0)
简单地告诉Do-Not-Rely and Trust-on-Client-Side-Validation。
最好通过过滤器传递所有servlet并检查是否存在正确的身份验证。