对于xss攻击防范我是否使用预准备语句或可调用语句

时间:2014-04-09 11:41:44

标签: java sql oracle jsp

String getDBUSERByUserIdSql =“{call getDBUSERByUserId(?,?,?,?)}”;

    try {
        dbConnection = getDBConnection();
        callableStatement = dbConnection.prepareCall(getDBUSERByUserIdSql);

        callableStatement.setInt(1, 10);
        callableStatement.registerOutParameter(2, java.sql.Types.VARCHAR);
        callableStatement.registerOutParameter(3, java.sql.Types.VARCHAR);
        callableStatement.registerOutParameter(4, java.sql.Types.DATE);

        // execute getDBUSERByUserId store procedure
        callableStatement.executeUpdate();

准备好的陈述

2 个答案:

答案 0 :(得分:1)

您使用preparedStatement,虽然这是针对SQLi预防而非XSS

答案 1 :(得分:1)

首先,您需要了解preparedStatement和callableStatement之间的区别,

PreparedStatement 当您计划多次使用SQL语句时使用。 PreparedStatement接口在运行时接受输入参数。

CallableStatement 当您要访问数据库存储过程时使用。 CallableStatement接口也可以接受运行时输入参数。

为了避免**XSS**,你可能更喜欢 preparedStatement ,正如David所说。参考here

希望这会有所帮助!!