Tag: sql injection

将参数传递给方法时,将标记查询强制为sqlInjection

我们的数据库层中有一个方法,如下所示: public List getNamesFromId(List idsList){ StringBuilder query = new StringBuilder(); query.append(“Select first_name from person where id in (“); for (int pos = 0; pos < idsList.size(); pos++) { query.append("?"); query.append(","); } query.deleteCharAt(query.length() – 1).append(")"); try { conn = establishConnection(); pstmt = conn.prepareStatement(query.toString()); for (int i = 0; i < selections.size(); i++) { pstmt.setLong(i + 1, […]

这个简单的字符串转义是否可以阻止任何SQL注入?

我在一家公司工作,负责数据库模块的人严格禁止使用预准备语句。 我担心他的实施不安全。 以下是我们当前用于进行SQL查询的代码(带有JDBC / MySQL 5.5的Java 8应用程序): String value = “Raw user input over HTTP-Form”; String sql = “SELECT * FROM db1.articles WHERE title like ‘” + replaceSingleQuotes(value) + “‘”; executeSQL(sql); public static String replaceSingleQuotes(String value) { value = value.replaceAll(“\\\\”, “\\\\\\\\”); return value.replaceAll(“‘”, “\\\\'”); } 我无法进行任何注射,但他的解决方案对我来说似乎非常可疑。 任何人都可以指出如何逃避这种逃避吗? 如果我无法提出任何问题,我将不会更换他的代码,我们的应用程序(银行业务)中有数千名客户提供非常敏感的信息。 编辑:不幸的是我无法显示executeSQL(),因为有一个庞大的类层次结构混乱,一切都是分散的。 但它归结为这样的事情: String query = … // […]

SQL注入 – 如何在java中使用preparedstatement

我有一个动态构建的SQL,以下是查询: private String constructTownSearchQuery(String country, String stateName,String districtName,String townName) { StringBuilder statesSearchQuery = new StringBuilder(); statesSearchQuery.append(” select cntry.countryid,cntry.country,sta.stateid,sta.state,dst.districtid,dst.district,twn.townid,twn.town “); statesSearchQuery.append(” from m_countries as cntry,m_states as sta,m_districts as dst,m_towns as twn “); statesSearchQuery.append(” where cntry.countryid = sta.countryid “); statesSearchQuery.append(” and sta.stateid = dst.stateid “); statesSearchQuery.append(” and twn.districtid=dst.districtid “); if (!country.equals(“”)) { statesSearchQuery.append(” and cntry.country='”).append(country).append(“‘ “); } […]

Hibernate Criteria Api是否完全防止SQL注入

我正在使用Hibernate保护我的网站免受SQL注入。 我听说Hibernate Criteria API比HQL更强大。 Hibernate Criteria Api是否完全防止SQL注入?

如何防止JSP中的SQL注入?

就在上周,我正在做一些PHP的东西。 我使用了一点解决方案来防止SQL注入。 PHP一直是我的人,它有3个解决方案可供使用(可能更多)。 一种是使用stripslashes()函数启用“魔术查询”。 另一个(推荐)是使用mysql_real_escape_string()函数。 那简单,我的问题就解决了。 但是,当谈到JSP时,事情似乎并不那么简单。 我搜索并没有找到任何内置函数来去除斜线或做那些事情(我相信这样的function可以使用基本的JAVA函数实现,但……)。 请帮我保护我的数据库。 我听说过PreparedStatement ,但是真的无法理解它? (我觉得新手的真正含义)。

我应该如何清理Java中的数据库输入?

有人可以指点我一个关于安全运行部分来自用户输入的SQL查询的初学者指南吗? 我正在使用Java,但语言中立的指南也很好。 期望的行为是,如果有人在GUI中输入类似的东西 very nice;) DROP TABLE FOO; 数据库应将其视为文字字符串并安全地存储它而不删除任何表。

如何使用SQL查询转义用户提供的参数?

尝试开始使用JDBC(使用Jetty + MySQL)。 我不确定如何在SQL语句中转义用户提供的参数。 例: String username = getDangerousValueFromUser(); Statement stmt = conn.createStatement(); stmt.execute(“some statement where username = ‘” + username + “‘”)); 在使用声明之前,我们如何逃避“用户名”?

在没有预准备语句的情况下防止SQL注入(JDBC)

我有一个数据库日志appender,每隔一段时间就会将可变数量的日志行插入到数据库中。 我想以防止SQL注入的方式创建一个SQL语句,但不使用服务器端预处理语句(因为我在每个选择中都有可变数量的行,缓存它们不会有帮助,但可能会损害性能) 。 我也喜欢准备好的陈述的便利,并且更喜欢他们串起来。 有没有像“客户端准备好的声明”?

如何在不使用预准备语句的情况下清理SQL

对于某些sql语句,我不能使用准备好的语句,例如: SELECT MAX(AGE) FROM ? 例如,当我想改变表格时。 是否有一个实用程序可以在Java中清理sql? ruby中有一个。

防止Java程序中的SQL注入攻击

我必须在我的java程序中添加一个语句来更新数据库表: String insert = “INSERT INTO customer(name,address,email) VALUES(‘” + name + “‘,'” + addre + “‘,'” + email + “‘);”; 我听说这可以通过SQL注入来利用,如: DROP TABLE customer; 我的程序有一个Java GUI,所有的名称,地址和电子邮件值都是从Jtextfields中检索的。 我想知道以下代码( DROP TABLE customer; )如何被黑客添加到我的插入语句中以及如何防止这种情况。