2017-09-10 5 views
1

HTML:(PHPとHTML)

<html> 
<head> 
    <title></title> 
</head> 
<body> 
    <header class="major last"> 
     <h2>Title</h2> 
    </header> 
    <form method="post" action="myprocessingscript.php" method="POST"> 
     <div class="row"> 
      <div class="6u 12u(mobilep)"> 
       <input type="text" name="Date" placeholder="Meeting Date (mm/dd/yy)" /> 
      </div> 
      <div class="6u 12u(mobilep)"> 
       <input type="text" name="Topic" placeholder="Meeting Topic" /> 
      </div> 
     </div> 
     <div class="row"> 
      <div class="12u"> 
       <textarea name="Summary" placeholder="Summary of the Meeting" rows="6"></textarea> 
      </div> 
     </div> 
     <div class="row"> 
      <div class="12u"> 
       <ul class="actions"> 
        <li><input type="submit" value="Send Message" /></li> 
       </ul> 
      </div> 
     </div> 
    </form> 
    <div> 
     <p><?php echo file_get_contents("data.txt"); ?></p> 
    </div> 
</body>` 

PHPの:

<?php 
if(isset($_POST['Date']) && isset($_POST['Topic']) && isset($_POST['Summary'])) { 
    $data = 'Date: ' . ' ' . $_POST['Date'] . ' Topic: ' . $_POST['Topic'] . ' Summary: ' . $_POST['Summary'] . "\n"; 
    $ret = file_put_contents('data.txt', $data, FILE_APPEND | LOCK_EX); 
    if($ret === false) { 
     die('There was an error writing this file'); 
    } 
    else { 
     echo "$ret bytes written to file"; 
    } 
} 
else { 
    die('no post data to process'); 
} 

私は最終的に取るフォームを作成しようとしています情報をテキストファイルに記録します。そのテキストファイルは最終的にWebページに含まれます。しかし、現時点では、フォームにコード(<a href="websiteaddress">websitename</a>など)が入力されている場合、そのコードが含まれていると、そのコードが実行されます。プレーンテキストではなく文字列としてレスポンスを受け取るようにコードを編集するにはどうすればよいですか?

+0

ペーストビンではなく、ここにコードを貼り付けてください。 – kojow7

答えて

0

PHPではhtmlspecialchars()関数を使用できます。たとえば:あなたはコードがテキストファイルからコードから読み取る追記

echo "<pre>"; 
echo htmlspecialchars('<a href="websiteaddress">websitename</a>'); 
echo "<pre>"; 

はもちろん、あなたが一の以上の行を抽出しますとはhtmlspecialchars()関数内で変数を配置します。

1つの注意点があります。JavaScriptコードなどの不自然なコードを書いた人には注意が必要です。 XSSと他の同様の攻撃を調べてください。 htmlspecialchars()を使用しているので、これはこれらの攻撃の大部分を処理する必要がありますが、コードの実装方法には注意が必要です。

+0

@ kowjow7それぞれの可能なコードを指定する必要がありますか、どのように実装されますか? – Goman693

+0

@ Goman693では、必要な場合は、コードブロック全体またはテキストファイル全体を含めることはできません。 – kojow7

+0

@ kowjow7私はもう少し研究をしました.htmlspecialchars()は自動的に更新され、新しいテキストファイルを()にコピーすることはできませんが、エスケープについて何かを見つけました。これを適切にエスケープしてコードを実行しないでください。 – Goman693