这个简单的字符串转义是否可以阻止任何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 = … // […]

java.sql.SQLException:参数索引超出范围(2>参数个数,为0)

public class Brothers extends javax.swing.JFrame { /** * declaring connection and SQL statement */ Connection cn; Statement st; PreparedStatement pstmt=null; PreparedStatement pst; ResultSet rs; Object fname, mname, lname, bdate, nation, statusq,InstNo, photo, combo, place, mimi; int status; public Brothers() { dbconnect _db = new dbconnect(); /*//////////////the above is just to show that I have two […]

安装Vaadin后获取NoClassDefFoundError

我想用Vaadin做一个项目,我正面临一些问题。 这就是我做的。 我下载了Eclipse并安装了Vaadin for Eclipse插件。 然后,我创建了一个新的Vaadin 7项目。 它下载了一些Ivy依赖项,但是当我按下Run时,我收到此错误:java.lang.NoClassDefFoundError:com / vaadin / server / VaadinServlet。 我在互联网上搜索了一下,但无济于事。 有一件事是在web-app的WEB-INF / lib文件夹中,没有jar。 我附上了错误的屏幕截图以及web.xml和ivy.xml。 的ivy.xml: <!DOCTYPE ivy-module [ ]> default”> default” /> default” /> default” /> ivysettings.xml: web.xml中: ScanAir index.html index.htm index.jsp default.html default.htm default.jsp 请帮忙。 我基本上没有开始编码。 我使用的是带有Java 7u45,Eclipse Kepler SR1和Vaadin 7.1.7的Windows 8.1 Pro x64

convertView.getTag(); 创建投射错误

我正在使用片段来创建一个填充了CheckBox的ListView 。 我尽力找到基于其他问题的解决方案,但我似乎无法修复它。 当我运行脚本而不使用: convertView.getTag(); 我的应用程序运行正常,但列表中项目的位置不保存。 视图项目跳转。 但是,当我使用该方法时,我收到一个错误。 日志猫说: 01-02 23:54:20.662: E/InputEventReceiver(1209): Exception dispatching input event. 01-02 23:54:20.672: D/AndroidRuntime(1209): Shutting down VM 01-02 23:54:20.672: W/dalvikvm(1209): threadid=1: thread exiting with uncaught exception (group=0x40a13300) 01-02 23:54:20.782: E/AndroidRuntime(1209): FATAL EXCEPTION: main 01-02 23:54:20.782: E/AndroidRuntime(1209): java.lang.ClassCastException: com.MrBabilin.youdeserveadrink.Items cannot be cast to com.MrBabilin.youdeserveadrink.AlcoholList$MyCustomAdapter$ViewHolder 01-02 23:54:20.782: E/AndroidRuntime(1209): at com.MrBabilin.youdeserveadrink.AlcoholList$MyCustomAdapter.getView(AlcoholList.java:169) 01-02 23:54:20.782: […]

使用BrowserMobProxy,Selenium,Firefox,marionette / gecko获取请求和响应

我正在尝试使用BMP的RequestFilter和ResponseFilter获得响应和请求。 但是,当网页加载时,控制台中不会打印任何内容。 其他一切似乎都有效。 也许BMP不是在看GeckoDriver? 我使用的是Firefox 50.0,BrowserMobProxy 2.1.2,Selenium 3.0.1和GeckoDriver 0.11.1 测试代码如下。 有人可以帮帮我吗? 非常感谢你! BrowserMobProxy server = new BrowserMobProxyServer(); server.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, CaptureType.RESPONSE_CONTENT); server.start(); int port = server.getPort(); server.addRequestFilter((request, content, info) -> { String q = URLDecoder.decode(info.getOriginalUrl(), “UTF-8”); System.out.println(“Request: “+q); return null; }); server.addResponseFilter((response, content, info) -> { String type = response.headers().get(“Content-Type”); System.out.println(“Response: “+info.getOriginalRequest()); System.out.println(type); }); Proxy proxy = […]

如何使java ServiceLoader在NetBeans 6.9模块应用程序中工作

我在NetBeans模块应用程序中使用java ServiceLoader时遇到了麻烦。 这是我正在尝试做的(它在Eclipse中的普通java应用程序中工作): 我有一个interface.jar,它声明了接口。 我有implements.jar,它有几个这个接口的实现,都在spi / META-INF / services / my.package.name.MyInteface文件中指定(这个文件位于implementation.jar中)。 我还有一个类ImplementationHandler(在另一个handler.jar中),它有以下方法来加载所有实现: private static List<MyInterface> loadAllImplementations() { List<MyInterface> foundImplementations = Lists.newArrayList(); try { for (MyInterface implementation : ServiceLoader.load(MyInterface.class)) { foundImplementations.add(implementation); } } catch (ServiceConfigurationError error) { system.out.println(“Exception happened”); } return foundImplementations; } 此代码返回Eclipse正常应用程序中的所有实现(foundImplementations.size()> 0)。 但是在NetBeans下,它找不到任何内容(foundImplementations.size()== 0)。 更多细节: 我有一个NetBeans模块应用程序的源代码(开源,不是我编写的),我需要通过使用一些MyInterface实现来扩展它。 interface.jar,implements.jar和handler.jar是在Eclipse中创建的,它们是另一个应用程序的一部分。 在NetBeans中,我打开了需要使用新function的模块,我将所有3个jars添加为外部库(NetBeans将它们复制到其ext文件夹中,我不想要但我无法做任何事情 – 我想要他们在另一个myext文件夹中,但这是另一个故事)。 然后我重新构建了所有内容并尝试使用我的一个实现,但是没有找到…获得实现的代码在ImplementationHandler类中,看起来像: public static […]

如何跟踪PDPageContentStream的文本输出的位置?

我使用Java将输出写入PDDocument ,然后将该文档附加到现有文档,然后再将其提供给客户端。 大多数都运作良好。 尝试在写入PDDocument时处理内容溢出时,我只有一个小问题。 我想跟踪文档插入文档的位置,以便当“光标”可以说超过某一点时,我将创建一个新页面,将其添加到文档中,创建一个新的内容流,并继续正常。 这是一些显示我想要做的代码: // big try block PDDocument doc = new PDDocument(); PDPage page = new PDPage(); doc.addPage(page); PDPageContentStream content = new PDPageContentStream(doc, page); int fontSize = 12; content.beginText(); content.setFont(…); content.moveTextPositionByAmount(margin, pageHeight-margin); for ( each element in a collection of values ) { content.moveTextPositionByAmount(0, -fontSize); // only moves down in document // […]

为什么这个简单的线程程序会卡住?

看看这个简单的Java程序: import java.lang.*; class A { static boolean done; public static void main(String args[]) { done = false; new Thread() { public void run() { try { Thread.sleep(1000); // dummy work load } catch (Exception e) { done = true; } done = true; } }.start(); while (!done); System.out.println(“bye”); } } 在一台机器上,它打印“再见”并立即退出,而在另一台机器上,它不打印任何东西并永远坐在那里。 为什么?

JSP / Servlet设计问题 – 通过JNDI全局提供请求/响应

在PHP中,总是能够从代码的任何部分访问当前请求或响应。 这个概念是PHP编程的基础。 请求数据,响应数据,会话数据(等)始终存在 ! 这在Java Servlets中不会发生! 为了能够访问代码中的HttpServletRequest,HttpServletResponse,HttpSession(等),您需要将它们作为函数变量传递。 这意味着您无法对本质上“知道”所有这些内容的Web框架进行编码,并消除了传递它们的复杂性。 所以,我设计了这个解决方案: 创建anf注册ServletRequestListener。 requestInitialized事件将当前的HttpServletRequest绑定到JNI上下文,给出当前Thread的名称(Thread.currentThread()。getName()); 在requestDestroyed事件解除绑定上面的JNI资源以进行清理。 这样,可以从代码的任何位置访问当前请求/响应,因为它们始终存在于JNI上下文中,并且可以通过提供当前线程的名称来检索。 所有已知的servlet容器都为每个请求实现单线程模型 ,因此请求无法混淆(当然,不能忘记清理它们)。 此外,每个Web应用程序的JNI资源在默认情况下是分开的 ,因此不存在混淆它们的问题或者可能由访问其他Web请求的Web应用程序引起的安全问题。 有点扭曲,但又好又简单…… 你怎么看?

尝试将BeaconParser添加到AltBeacon lib时出现exception

我一直试图从AltBeacon修改参考应用程序以检测iBeacons。 在RangingActivity中,我取代了 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ranging); beaconManager.bind(this); } 同 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ranging); BeaconParser bp = new BeaconParser(); bp.setBeaconLayout(“m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24”); List lbp = beaconManager.getBeaconParsers(); lbp.add(bp); beaconManager.bind(this); } 为了应用修改来检测我在这里找到的iBeacon。 但是这会抛出,因为lbp是java.util.Collections $ UnmodifiableRandomAccessList。 我是Java的新手,但我想这是一个我无法添加项目的列表,并且在第二个链接和现在的解决方案之间的库中必须更改某些内容。 有人知道添加新BeaconParser的正确方法是什么,或者我在这里做错了什么?