是安全的传递从MySQL数据库跨页选择的数据的标识,并用它来获取和PHP显示更多的数据?
问题描述:
我有一个网页连接,并从数据库中选择课程后,课程将显示一个链接,查看下面的每个过程:是安全的传递从MySQL数据库跨页选择的数据的标识,并用它来获取和PHP显示更多的数据?
<div class="col-md-4">
//query db action and assign the query to $result
$result = $dbcon->query($query);
if($result -> num_rows > 0){
//If courses are available(rows > 0), fetch and display them
while($row = $result->fetch_object()){
echo '<h2>'.$row->course_title.'</h2';
echo '<p>'.$row->course_description.'</p>';
echo '<a href="view.php?action=view&t='. $row->course_id.'">View Course</a>';
}
}
</div>
这是view.php代码页:
if(isset($_GET['action']) && $_GET['action'] == "view"){
//Assign var $id to the id from the _GET array
$id = $_GET['t'];
//Use the $id to fetch course details from the database
$query = ("SELECT * FROM courses WHERE course_id = '$id'");
//Query the db action
$result = $db_connect->query($query);
$rows = mysqli_num_rows($result);
if($result && $rows > 0){
while($row = $result->fetch_object()){
echo '<div class="col-md-10">';
echo '<h1>'.$row->course_title.'</h1>';
echo '<p>'.$row->course_description.'</p>';
echo '<div class="col-md-6"><span class="inline-elm">'.$row->course_subject.'</div>';
echo '<div class="col-md-6"><span>'.$row->course_level.'</p></div>'</div>';
}
}
}
我的问题是,我不知道这是否是正确的,当然,安全做或有做它一个更安全/有道。会真的很感激你的答案。由于
答
它的优良传内的URL标识,但他们应该像任何其他数据进行处理,即适当处理,验证和逃脱。准备好的声明是做这件事的好方法。最起码,在这里,因为你期望一个int,你可以这样做:
$id = intval($_GET['t']);
注意,预处理语句不防止,如果这样做“回声$ ID”没有用htmlspecialchars包裹它可能会出现的XSS漏洞。输入消毒总是很好,如果它是一个int,那么坚持一个intval!你永远不知道...
你的代码是不是安全的;用事先准备好的声明 –
我如何在这里使用预处理语句? – Nayi
您可以使用用户输入查询?当然,但现在你这样做的方式*是不安全的。看看[这个问题](https://*.com/questions/60174/how-can-i-prevent-sql-injection-in-php)来获取如何保护自己 –