ユーザー入力データをxmlファイルに保存するMagentoモジュールを作成しています(後で使用するためにサーバーに保持されます-名刺の注文を考えてください)。私のプロセスはどれほど安全であり、(もしあれば)どのようなセキュリティ問題が発生する可能性があるのか疑問に思っています。私はこのサイトをpci準拠のサーバーを専門とする会社でホストしており、さらに、の下で実行されていることに注意してくださいCHROOT
。
エントリを実行するレガシーフラッシュファイルがいくつかあります(それらはいくつかあります。または、再作成するだけです)。これらは印刷注文であるため、あらゆる種類の特殊文字を受け入れる必要があります(したがって、検証の方法であまり多くのことをしません)。
そこから:$。ajax-> Processor.php->
/* grab params */
if (isset($_POST)) {
foreach ($_POST as $key => $value) {
$params[$key] = filter_var($value, FILTER_SANITIZE_STRING);
}
}
/* build xml */
$xml = new DOMDocument('1.0', 'UTF-8');
$xml_root = $xml->createElement('Root');
foreach ($params as $key => $value) {
$xml_node = $xml->createElement( $key );
if(!empty($value) && $value != 'undefined'){
$xml_node->appendChild( $xml->createTextNode( $value ));
}
$xml_root->appendChild($xml_node);
}
$xml->appendChild($xml_root);
/* create filename */
$d = new DateTime('now');
$date = str_replace(" ", ".",$d->format('Y-m-d G:i:s'));
$keyvar = preg_replace('/[^a-zA-Z0-9-]/', '', $params['keyVar']);
$filename = str_replace(" ", "", $params['template'].".".$date.".".$keyvar.".xml" );
$file = $_SERVER['DOCUMENT_ROOT'].'/media/customer/orders/'.$filename;
/* write it */
$xml->save($file);
次に、ファイルの参照(場所ではなく)をクライアントに返して、注文に添付します。
だから:含まれていません。varsはサニタイズされます(特殊文字も使用できます)。一意のファイル名。(フロントエンドを介して)不明な場所に保存されたファイル。
システムはITセキュリティによって精査される予定です。レビューの前に何かをキャッチしたいだけです。
私は何かが足りないのですか?