0

さて、私はプログラミングの初心者で、過去の趣味でプログラミングをしているだけです。私は最近、楽しみのために Web エディターを作成していますが、それを行っていた方法 (PHP を使用) は悪い方​​法だと言われました。私も作りながら考えたのですが、大量のデータ転送でこのままではまずいのではないかと。それを行う別の方法を考えることができず、それを改善するのを手伝ってくれる人を探していました。つまり、私が使用している保存方法を意味します。ここに私のコード:

編集者:

<html>
<head>
<title>Web Editor</title>
<link href="controller.css" rel="stylesheet"/>
<script type="text/javascript" src="script/editor.js"></script>
</head>
<body>
<div class="platform">
<div class="head"><div class="file"><p>File: <div id="file">C:\hello.html</div></p></div></div>
<div class="hotbar"><img src="images/save.png" class="hotbarImage" onClick="save()" />

</div>
<div class="editor"><div contenteditable="true" style="height:100%; overflow:scroll;" id="editPad"></div></div>
</div>




</body>
</html>

JS:

function save() {
    var dir = document.getElementById("file").innerHTML;
    var data = document.getElementById("editPad").innerHTML;
    window.location = "save.php?dir="+encodeURIComponent(dir)+"&data="+encodeURIComponent(data);
}

PHP:

<?php
$dir = $_GET['dir'];
$data = $_GET['data'];
$lookFor = array("&lt;", "&gt;","<br>","<%2Fdiv>","<div>","</div>");
$replaceWith = array("<", ">", "", "", "","");
$newData = str_replace($lookFor,$replaceWith,$data);

$f = fopen(urldecode($dir),"w");
fwrite($f,urldecode($newData));
fclose($f);
?>

これらはすべて進行中の作業であり、さらに多くのことを行う必要があります。しかし、今のところ、大量のデータが転送されているファイルを保存するためのより良い方法はありますか?

4

2 に答える 2

2

いくつかの理由から、データを保存するためにリクエストを使用しないでくださいGET。最も重要な理由は、GETリクエストの長さに制限があることです。

コンテンツが非常に大きい場合は、ブラウザが URL を送信しないか、サーバーが URL を受け入れない (長すぎるため) ために保存できない可能性があります。

できることは、非表示のフォームを作成し、必要なフィールドに入力して JavaScript で送信することです。必ず設定してくださいaction="post"

于 2013-05-23T01:34:47.167 に答える
1

いくつかの重大なセキュリティ ホールがあります。最も重要なのはそのfopen呼び出しです。任意のファイルを に$dir渡し、任意のデータを/var/www/file.php書き込むことができます。これは簡単に悪用される可能性があり、誰かが新しい PHP ファイルを書き込んでファイルシステムに読み書きできるため、Web アプリケーション全体を危険にさらす可能性があります。

ファイルシステムに任意のファイルを書き込まないでください。それらをデータベースに保存する必要があります。コードのその部分を修正したら、HTML を適切にエスケープする必要があります。

于 2013-05-23T01:36:40.230 に答える