0

Java HttpServer で SQL クエリを作成したいのですが、ブラウザに送信したリンクの特殊文字を HttpServer が認識しないようです。

[1]: http://localhost:8001/test?query=SELECT * WHERE{ ?s rdf:type ?o. }

私はいつもこの応答を受け取ります:

400 Bad Request
URISyntaxException thrown

これは私のサーバーのコードです:

public class SimpleHttpServer 
{

public static void main(String[] args) throws Exception 
{

        dir = args[0];
        HttpServer server = HttpServer.create(new InetSocketAddress(8001), 0);
        server.createContext("/test", new MyHandler());
        server.setExecutor(null);
        server.start();
    }

    static class MyHandler implements HttpHandler {
        public void handle(HttpExchange t) throws IOException {
            String response ;
            System.out.println(t.getRequestURI().getQuery().toString().replaceAll("query=",   ""));
            response =   ExecuteHttpQuery.getInstance().httpQuery(t.getRequestURI().getQuery().toString().replaceAll("query=", "").toString(), dir) + "\n";
            t.sendResponseHeaders(200, response.length());
            OutputStream os = t.getResponseBody();
            os.write(response.getBytes());
            os.close();
        }
    }
}

どうすればこれを修正できますか?

4

2 に答える 2

5

URL に SQL クエリを渡してはいけません。

于 2011-12-16T13:09:57.887 に答える
5

はい、URL の特定の部分で無効な特定の文字があります。(これをテストしているだけで、実際のSQLインジェクション攻撃などに実際に使用していないことを願っています)、最初にURLEncoderを使用してSQLクエリをエンコードする必要があります。

于 2011-12-16T13:10:05.137 に答える