2017-06-17 8 views
1

Template.JSがアレイとクローンの力を持っている限り、ハッカーが悪意のあるスクリプトを配列に入力し、悪意のあるデータエントリを持つ別のクローンボックスを作成する恐れがあります。誰かが悪意のあるデータを配列に入れないようにするにはどうすればいいですか?配列にコードを挿入しないようにするにはどうすればよいですか?

ボックスのクローニング、配列データ、「機能可能な」ボタンの使用方法は私の誇りです。

https://fiddle.jshell.net/NitroXAce/d1qro5g3/14/

私は素晴らしいだろう配列にする悪質なデータを防ぐために入力することができますプラグインやスクリプトがある場合!私は入力にコードを挿入できないことがあることを知っています。しかし、私はどのブラウザでもconsole.logが干渉する可能性があることを恐れています...?

+0

これはフロントエンドコードですか?あなたは本当に誰も自分のブラウザでjを変更するのを止めることはできません。 – aw04

+0

あなたのフィドルにはテンプレートもクローンも表示されません。あなたは何について話していますか?そして、誰かが自分のブラウザ内のページを改ざんするのを止める方法があるかどうかを尋ねるなら、あなたができる最善のことは、コードが何をするのかを伝えるのを難しくし、サーバー側で検証することを確実にすることです。 – JLRishe

+0

"クローニング"とは配列の長さを使って、画像、タイトル、価格、ボタン機能を挿入するボックスやテンプレートを作成しました –

答えて

2

データがサーバーから送信され、ユーザー入力ではないと仮定すると、「ハッカー」が実行できる最も悪いのは、自分のブラウザーで実行されることです。それほど重要ではない。

つまり、インラインイベントハンドラは使用しないでください。

理想的には、DOMにロードされたHTMLを渡す必要があります(createElementなどで構築する方がよいと主張する人もいます)。イベント委任を使用します。

しかし、それは実装の詳細です。あなたの質問への鍵となる答えは、信頼できるデータソース(つまり、ユーザが生成したものは何もない)を前提とすると、「悪意のある」ユーザが何を入れるかも心配する必要はありません。サーバーは、意味を確実にするために送信されたものを検証する必要があります。

1

私は同様の問題がありましたが、今はもっと安全なWebページを作成するためにPHPを学習しています。しかし、アレイはコンソールなどを使用してクライアント側でのみ編集可能です。したがって、誰かが値を変更したとしても、別のクライアントがページを読み込んだ場合でも、値は同じになります。つまり、別のページやサーバーに値を送信する場合は、サーバー側の言語を使用する必要があります。そのため、サーバー側の言語でRegExを使用すると、変更された入力を防ぐことができます。

$string_exp = "/^[A-Za-z .'-]+$/"; 
if(!preg_match($string_exp,$client_name)) { 

    $error_message .= 'The First Name you entered does not appear to be valid.<br />'; 

} 
if(strlen($error_message) > 0) { 

died($error_message); 

} 

上記は私のPHPからの値のみ許可された文字を使用して、名前に無効な文字を使用する場合は、「$のERROR_MESSAGE」を設定し、確認するためにチェックしてフォームを送信小さな例です。後で '$ error_message'(通常は空です)がチェックされ、空でもnullでもない場合、スクリプトは終了し、エラーメッセージをページにポストします。

関連する問題