Avatar billede skillzor Nybegynder
26. maj 2007 - 20:18 Der er 4 kommentarer og
1 løsning

request.getParameter() i sql query

Hej jeg har 2 jsp sider. Den første index.jsp har jeg dette:

<form method='post' action='gruppe.jsp'>
<input type='text' name='SEARCHSTRING' size='20'>
<input type='submit' name='search' value='Søg' style='width: 150;' style="width: 50px;">
</form>

det er så meningen at den skal sende det der er indtastet videre til gruppe.jsp hvor dette bliver udført:

ResultSet myResultSet = stmt.executeQuery("SELECT navn, hits from Gruppe where navn =" + request.getParameter("SEARCHSTRING"));

Jeg får en fejlmeddelelse hvis jeg prøver at afvikle siden, hvor jeg har skrevet Testdata på index.jsp, og jeg ved at Testdata findes i databasen, der er også hul igennem da det virker på andre sider. Jeg får følgende fejlmeddelelse:
exception

javax.servlet.ServletException: [Microsoft][SQL Native Client][SQL Server]Invalid column name 'Testdata'.
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
    org.apache.jsp.gruppe_jsp._jspService(gruppe_jsp.java:101)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)


root cause

java.sql.SQLException: [Microsoft][SQL Native Client][SQL Server]Invalid column name 'Testdata'.
    sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
    sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
    sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3111)
    sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
    sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(JdbcOdbcStatement.java:253)
    org.apache.jsp.gruppe_jsp._jspService(gruppe_jsp.java:66)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
Avatar billede arne_v Ekspert
26. maj 2007 - 20:29 #1
ResultSet myResultSet = stmt.executeQuery("SELECT navn, hits from Gruppe where navn ='" + request.getParameter("SEARCHSTRING")+"'");
Avatar billede arne_v Ekspert
26. maj 2007 - 20:29 #2
altså plus nogle '' omkring værdi
Avatar billede arne_v Ekspert
26. maj 2007 - 20:30 #3
check evt. også http://www.eksperten.dk/artikler/830 så du kan beskytte dig mod
SQL injection
Avatar billede skillzor Nybegynder
26. maj 2007 - 20:39 #4
Perfekt!
Jeg vil tage et kig på den artikel med det samme.
Smid et svar arne.
Avatar billede arne_v Ekspert
26. maj 2007 - 20:43 #5
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester