안녕하세요.이 모든 것이 스택 오버플로에 대한 첫 번째 질문입니다. webql과 javascript를 사용하여 phonegap으로 앱을 개발 중입니다. 내 앱에는 사용자 이름과 비밀번호의 두 가지 입력이 필요한 로그인 양식이 있습니다. 사용자가이 값을 채우고 로그인을 클릭하면이 값은 여러 행이있는 데이터베이스 테이블에서 확인됩니다. 값을 확인하기 위해 나는이javascript 변수에 where 절 사용
var email=document.getElementById("uname").value;
tx.executeSql('SELECT * FROM USERINF Where Email=email', [], MatchPass, errorCB1);
을 질의 - 사용하고 그러나 쿼리는 자바 스크립트 변수를 where 절과 함께 작동하지 않습니다. 나는 또한
where [email protected]
where Email="+email+"
그리고 더 많은 같은 많은 syntexes을 시도했지만 한 그들은 모든 일을하지.
where 절과 함께 javascript 변수를 사용할 수 있습니까 ?? 예인 경우 방법을 알려주십시오. 경우 작업을 수행하는 다른 방법을 제안하시기 바랍니다. 사전에 감사합니다.
이 당신 연결하는 + 연산자를 사용하는 데 필요한 쿼리의 JS 변수 이메일의 값을 얻으려면
// JavaScript Document
var db=window.openDatabase("CakeViewer", "1.0", "Cake Viewer", 2*1024*1024);
function login()
{
db.transaction(matchcred)
function matchcred(tx)
{
var eml=document.getElementById("uname").value;
tx.executeSql('SELECT * FROM USERINF Where Email=eml', [], MatchPass, errorCB1);
//problem is in above line-- the query is not executed with variable where clause. But it works fine if I use where Email="[email protected]"
}
function MatchPass(tx, results)
{
var orgnalPass=results.rows.item(0).Password;
var userinputedPass=document.getElementById("pass");
if(orgnalPass==userinputedPass.value)
{
window.location.href='HomePage.html';
}
else
{
errorCB();
}
}
function errorCB(tx,err)
{
alert("User Name or Password is not valid !");
document.getElementById("uname").value="";
document.getElementById("pass").value="";
}
function errorCB1()
{
alert("Query failed");
}
function errorCB2(tx,err)
{
alert("errorCB2"+err);
}
}
안녕하세요 덕분에 mithunsatheesh, 덕분에 많이! –
그래,하지만 전자 메일이 사용자로부터 온다고 가정 할 때 전자 메일 값의 잠재적 인용 부호에서 벗어나지 않으면 SQL 주입을 얻을 수있는 좋은 방법입니다. 또한 SQL 구문은 문자열을 큰 따옴표로 묶습니다. 나 한테 잘못한 것 같아. – ErikE
+1 그런 연습에 의해 도입 된 보안 문제에 대한 ErikE의 의견. 제발 제발 이런 식으로 원시 SQL 문을 사용하여 옹호 (또는 제안 대답을 수락하지 마십시오). – danielpops