2015-01-28 4 views
0

나는 내 mysql 데이터베이스에서 사용자 이름과 암호를 읽을 prosody를 얻고 싶습니다. Prosody는 module을 제공합니다.이 정보는 SQL 데이터베이스에서이 정보를 얻을 수 있습니다.prosody 루아 모듈에서 sql 입력을 sanitize

내 질문은 :이 루아 코드는 SQL 주입을 어떻게 방지합니까? 루아 코드에서 입력 소독제를 찾을 수 없습니다.

답변

1

prepared statements을 사용합니다. 매개 변수가 개별적으로 전송되기 때문에이없는,

local stmt, err = connection:prepare(sql); 
local ok, err = stmt:execute(...); 

: 그런 다음 문 및 매개 변수가 데이터베이스에 전송하는

getsql("SELECT `password` FROM `authreg` WHERE `username`=? AND `realm`=?", username, module.host); 

:는 SQL 별도로 제공되는 매개 변수에 대한 자리 표시자를 포함 동일한 SQL 주입 위험. getsql에 대한 첫 번째 매개 변수의 sql 만 sql로 처리됩니다. 다른 매개 변수는 데이터로만 처리됩니다.