I 'DBinterface'라는 클래스와 'user'라는 클래스가 있습니다.해킹되지 않도록 DB 클래스를 보호하는 가장 좋은 방법은 무엇입니까
연결 기능을 공개해도 괜찮습니까?
class dbinterface { private $_dbLink; private $dbHost = 'host'; private $dbUser = 'user'; private $dbName = 'name'; private $dbPass = 'pass'; private $dbUserTable = 'table'; public function connect() { $this->_dbLink = mysql_connect($this->_dbHost, $this->_dbUser, $this->_dbPass); if(!$this->_dbLink) throw new Exception ("Could not connect to database. " . mysql_error()); }
사용자 ID 및 암호와 같은 모든 사용자 정보를 저장하는 SQL 테이블이 있습니다. 쉽게 테이블을 해킹하는 사람의 위험 부담없이이 테이블의 이름을이 함수에 넣을 수 있습니까? 아니면 db 클래스를 사용해야합니까?
function registerUser($userName, $userPassword) { $db = new db(); $db->connect(); // Select database mysql_select_db($this->dbName); $query = "insert into usersExample values (NULL, \"$userName\", \"$userPassword\")"; $result = mysql_query($query); // Test to make sure query worked if(!$result) die("Query didn't work. " . mysql_error()); // Get the user ID $this->userID = mysql_insert_id(); // Close database connection mysql_close($dbLink); } // End registerUser()
PS : 나는 암호 암호화를 제거하고 가독성을위한 문자열을 탈출했다.
사용자는 임의로 public으로 표시된 함수를 호출 할 수 없으며 최종 사용자가 자신이 'registerUser' 자체를 호출하도록 허용하지 않는 한, 아무 것도 괜찮습니다. 입력 내용을 살균합니다 ... – Cyclone
mysql 확장이 오래된 것입니다. 방법 비추천. 새 코드는 mysqli 또는 PDO를 사용해야하며, 둘 다 준비된 문에 대한 지원과 같은 중요한 이점이 있습니다. – outis