我必须在我的java程序中添加一条语句以更新数据库表:
String insert =
"INSERT INTO customer(name,address,email) VALUES('" + name + "','" + addre + "','" + email + "');";
我听说可以通过SQL注入来利用此漏洞,例如:
DROP TABLE customer;
我的程序具有Java GUI,并且从中检索所有名称,地址和电子邮件值Jtextfields
。我想知道DROP TABLE customer;
黑客如何将以下代码()添加到我的插入语句中,以及如何防止这种情况发生。
您需要使用PreparedStatement。例如
String insert = "INSERT INTO customer(name,address,email) VALUES(?, ?, ?);";
PreparedStatement ps = connection.prepareStatement(insert);
ps.setString(1, name);
ps.setString(2, addre);
ps.setString(3, email);
ResultSet rs = ps.executeQuery();
这样可以防止注入攻击。
黑客将其放入其中的方式是,如果您要插入的字符串来自某个地方的输入-例如,网页上的输入字段,或应用程序或类似表格中的输入字段。
所谓 SQL 注入,就是通过把 SQL 命令插入到 Web 表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 SQL 命令。具体来说,它是利用现有应用程序,将(恶意)的 SQL 命令注入到后台数据库引擎执行的能力,它可以通过在 Web 表单中输入(恶意)SQL 语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行 SQL 语句。比如先前的很多影视网站泄露 VI
问题内容: 在将输入数据放入MySQL数据库之前,我可以在Perl中使用该功能来清理输入吗?我不太了解正则表达式,所以在我做自己的功能之前,我想知道是否已经有一个正则表达式。 问题答案: 清理要插入数据库的数据的正确方法是对所有要插入SQL字符串的变量使用占位符。换句话说,永远不要这样做: 而是使用占位符: 然后在执行查询时传递要替换的变量: 您可以将这些操作与某些DBI便捷方法结合使用。上面也可
是否可以像PHP准备语句那样防止SQL注入Node.js(最好是使用模块)。 如果是,怎么做?如果不是,有哪些例子可以绕过我提供的代码(见下文)。 某些上下文: 我正在使用node-mysql模块制作一个具有由node.js+MySql组成的后端堆栈的web应用程序。从可用性的角度来看,这个模块很棒,但是它还没有实现类似于PHP准备好的语句的东西(尽管我知道它在todo上)。 根据我的理解,PHP
本文向大家介绍Nginx中防止SQL注入攻击的相关配置介绍,包括了Nginx中防止SQL注入攻击的相关配置介绍的使用技巧和注意事项,需要的朋友参考一下 防止sql注入最好的办法是对于提交后台的所有数据都进行过滤转义。 对于简单的情况,比如包含单引号' , 分号;, <, >, 等字符可通过rewrite直接重订向到404页面来避免。 用rewrite有个前提需要知道,一般用rewrite进行正则匹
本文向大家介绍Yii框架防止sql注入,xss攻击与csrf攻击的方法,包括了Yii框架防止sql注入,xss攻击与csrf攻击的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Yii框架防止sql注入,xss攻击与csrf攻击的方法。分享给大家供大家参考,具体如下: PHP中常用到的方法有: 调用: (必须放在接收数据之外) 注意: 表单提交值,为防止csrf攻击,控制器中需要加上:
问题内容: 准备好的语句如何帮助我们防止SQL注入攻击? 维基百科说: 准备好的语句可以抵御SQL注入,因为稍后需要使用其他协议传输的参数值不需要正确地转义。如果原始语句模板不是从外部输入派生的,则不会发生SQL注入。 我不太清楚原因。用简单的英语和一些例子,简单的解释是什么? 问题答案: 这个想法很简单-查询和数据被发送到数据库服务器 分开 。 就这样。 SQL注入问题的根源在于 代码和数据 的