因此,从URL中抓取变量ID并将其剥离以防止任何事情发生.
然后我们有一个IF语句来检查$ ok是否是一个数字,如果是,它现在被引用为$ id,用于下面的SQL查询.
在编码以防止访问时,我应该采取哪些其他预防措施?
$ok=mysql_real_escape_string(htmlspecialchars(stripslashes(trim(strip_tags(strtoupper($_GET['id']))))));
if(is_numeric($ok)){$id=$ok;}
$sql=mysql_query("SELECT * FROM games WHERE ID = '$id'");
<...more code here...>
Run Code Online (Sandbox Code Playgroud)
防止SQL注入的一种好方法是使用预准备语句:http: //php.net/manual/de/mysqli.quickstart.prepared-statements.php
例如:
$mysqli = new mysqli("example.com", "user", "password", "database");
// Note the '?', it's a placeholder
$stmt = $mysqli->prepare("SELECT * FROM games WHERE ID = ?");
// Providing an actual value for the placeholder
$stmt->bind_param("i", $_GET['id']);
$stmt->execute()
Run Code Online (Sandbox Code Playgroud)
这是针对SQL注入的保存,因为语句在没有不安全数据的情况下被发送到数据库,然后在额外的步骤中提供并由DB安全地插入.