問題タブ [sanitization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xss - ユーザー入力をサニタイズするのに最適な時期はいつですか?
ユーザーは信頼できません。信頼できないユーザーの入力は決して信用しないでください。わかりました。ただし、入力をサニタイズするのに最適な時期はいつかと思います。たとえば、ユーザー入力をやみくもに保存し、アクセス/使用されるたびにサニタイズしますか?それとも、入力をすぐにサニタイズしてから、この「クリーンな」バージョンを保存しますか? これらに加えて、私が考えていない他のアプローチもいくつかあるかもしれません。私は最初の方法にもっと傾いています。なぜなら、ユーザー入力から得られたデータにはまだ慎重にアプローチする必要があり、「クリーンアップされた」データが知らないうちに、または偶然に危険である可能性があるからです。いずれにせよ、人々はどの方法が最善だと考えていますか? また、その理由は何ですか?
database - データベースで重複するアドレスを見つけた場合、ユーザーが早期に入力するのを止めますか?
データベース内の重複した住所を見つけるにはどうすればよいですか? または、フォームに入力するときにすでに人を止めたほうがよいですか? 早い方がいいと思いますか?
タイプミスや 2 つの登録を取得しようとする単純な試みを検出できるように、通りや郵便番号などを抽象化する良い方法はありますか? お気に入り:
私はドイツの住所を話している...ありがとう!
bash - bash スクリプトで、ユーザー入力をサニタイズするにはどうすればよいですか?
私は単純な入力を取るための最良の方法を探しています:
英数字以外の文字、小文字 (大文字) を削除し、スペースをアンダースコアに置き換えてクリーンアップします。
順序は重要ですか?tr
これについて最善/唯一の方法はありますか?
sql - 単一引用符をエスケープし、ユーザー入力を単一引用符で囲むことにより、SQL インジェクションから保護できますか?
ユーザー入力を含むクエリを作成するときに、パラメーター化された SQL クエリがユーザー入力をサニタイズする最適な方法であることは認識していますが、ユーザー入力を取得して一重引用符をエスケープし、文字列全体を一重引用符で囲むことの何が問題なのか疑問に思っています。コードは次のとおりです。
ユーザーが入力した一重引用符は二重の一重引用符に置き換えられ、ユーザーが文字列を終了する機能を排除するため、セミコロン、パーセント記号など、ユーザーが入力する可能性のあるものはすべて文字列の一部になり、コマンドの一部として実際に実行されるわけではありません。
Microsoft SQL Server 2000 を使用していますが、単一引用符が唯一の文字列区切り文字であり、文字列区切り文字をエスケープする唯一の方法であると考えているため、ユーザーが入力したものを実行する方法はありません。
これに対して SQL インジェクション攻撃を開始する方法は見当たらないが、もしこれが私に思えるほど防弾であるなら、他の誰かがすでに考えていたであろうし、それは一般的な慣行であろう.
このコードの何が問題になっていますか? このサニタイズ手法を通過して SQL インジェクション攻撃を受ける方法はありますか? この手法を利用するユーザー入力のサンプルは非常に役立ちます。
アップデート:
このコードに対して SQL インジェクション攻撃を効果的に開始する方法はまだわかりません。バックスラッシュで 1 つの単一引用符をエスケープし、もう 1 つの引用符を残して文字列を終了し、残りの文字列が SQL コマンドの一部として実行されるようにすることを何人かの人々が提案しました。 MySQL データベースですが、SQL Server 2000 で単一引用符をエスケープする (私が見つけた) 唯一の方法は、別の単一引用符を使用することです。バックスラッシュはそれをしません。
また、一重引用符のエスケープを停止する方法がない限り、残りのユーザー入力はすべて 1 つの連続した文字列として処理されるため、実行されません。
入力をサニタイズするためのより良い方法があることは理解していますが、上記で提供した方法が機能しない理由を知りたいと思っています。このサニタイズ方法に対して SQL インジェクション攻撃を開始する特定の方法を誰かが知っている場合は、ぜひご覧ください。
html - ホスト型 CMS の HTML マークアップをサニタイズする必要がありますか?
ホステッド CMS のような顧客向けサービスの開始を検討しています。
顧客はテキストを入力する必要があり、そのテキストはサイトを訪れた人に提供されます。大きなテキスト ブロックには、おそらく WMD (SO が使用するライブ マークダウン プレビュー) と組み合わせて、Markdown を使用する予定です。
さて、html の入力をサニタイズする必要がありますか? 「CMS」を編集しているのはほんの一握りの人であり、すべて有料の顧客であることを考えると、悪い HTML を削除する必要がありますか、それともそのまま放置する必要がありますか? 結局のところ、それは彼らの「サイト」です
編集:私がそれを行う主な理由は、彼らに独自のjavascriptを使用させ、独自のcssとdivを持たせ、出力に何をしないかです。
javascript - お気に入りの Web フォームの検証手法
ユーザーデータをサニタイズするためのみんなのお気に入りの方法は何ですか?
私は Javascript を使用してきましたが、最近はより安全なものが必要になりました (結局、人々はそれをオフにすることができます)。そのため、Flex を検討していましたが、コミュニティの意見を聞いてみようと思いました。
mysql - MySQL ユーザー パラメータのサニタイズ
ユーザーの入力が MySQL クエリに挿入されるときに、ユーザー入力で置き換える必要がある危険な文字は何ですか? 引用符、二重引用符、\r および \n については知っています。他にもありますか?
(パラメータを受け入れるスマートコネクタを使用するオプションがないため、クエリを自分で作成する必要があります。これは、いくつかのあいまいなものを含む複数のプログラミング言語で実装されるためmysql_real_escape_string
、PHP などのソリューションは有効ではありません)
php - URL 変数をきれいにするためのきちんとした方法はありますか?
私は、それらを使用する前に、私のURLに変数を取得するための迅速かつ簡単な関数があるかどうか疑問に思っています.(または$_POSTが思い浮かびます...)
正規表現を使用して許可されていない文字を置き換えることができると思いますが、人々がこの種のことに何を使用しているかを知りたいですか?
html - HREF から Javascript を削除する
他の Web ページへの "通常の" href リンクを許可したいのですが、クライアント側のスクリプトに誰かが忍び込むことを許可したくありません。
HREFおよびonclick/onmouseover/etc内で「javascript:」を検索しています。イベントは十分ですか?それとも他に確認することはありますか?
python - 健全性チェックのためのループ関数パラメーター
入力パラメーターのサニタイズを行っている Python 関数があります。
これにより、引数が空の文字列ではなくNoneとして渡されます。関数パラメーターをループして、そのような式をすべてに適用する、より簡単で簡潔な方法はありますか。私の実際の関数には 9 つのパラメーターがあります。