Asp.Netのデータフィルタリングの浅い分析
3151 ワード
Asp.Netオープンでは、セキュリティの問題が最も多いのは、以下の3つの側面から来ています.
1.アップロード
2.クロスステーション
3.ちゅうにゅう
アップロードされたセキュリティ問題は本明細書の議論の範囲内ではなく、ここではクロスステーションと注入の問題だけを議論し、この2つは基本的にフィルタリングによって処理することができます.注入を最后に置いたのは、SQL注入が何年も游んでいたので、皆さんは一定の防犯があったはずです.少し注意すれば、aspにいることができます.ネット上で遊ぶ注入はかなり少ないです!以下の点に注意してください.
1.すべてのパラメータ.intタイプの場合はintに変換して処理してください!箱詰めと解体で話をするな!今みんなもsql文を直接webの中でつなぎ合わせることはできないと思います.少なくともいくつかのクラスを使って、真ん中の簡単な論理処理をしなければなりません.タイプ変換はまだ関連しています
2.できるだけパラメトリッククエリーを使用します!
3.少なくとも1つの引用符をフィルタリングすることに注意してください(実際にはパラメトリッククエリーを使用すれば、フィルタリングしなくても大丈夫ですが、私はやはり習慣的にフィルタリングします).
4.エラーをユーザーに直接暴露しないでください.これは注入を防ぐためだけでなく、ユーザー体験の問題でもあります.OnErrorイベントを書き換え、継承することで、うまく処理できます!
駅をまたぐことに対して、耳を洗うのが面倒で、濾過はずっと葛藤しているもので、濾過が厳しすぎて、正常な使用に影響して、濾過がよくなくて、また安全問題を引き起こします!私が書いたばかりのフィルター類を出して、その中にまだ考えていないところがあるかもしれませんが、皆さんに教えてもらいたいです.
1.アップロード
2.クロスステーション
3.ちゅうにゅう
アップロードされたセキュリティ問題は本明細書の議論の範囲内ではなく、ここではクロスステーションと注入の問題だけを議論し、この2つは基本的にフィルタリングによって処理することができます.注入を最后に置いたのは、SQL注入が何年も游んでいたので、皆さんは一定の防犯があったはずです.少し注意すれば、aspにいることができます.ネット上で遊ぶ注入はかなり少ないです!以下の点に注意してください.
1.すべてのパラメータ.intタイプの場合はintに変換して処理してください!箱詰めと解体で話をするな!今みんなもsql文を直接webの中でつなぎ合わせることはできないと思います.少なくともいくつかのクラスを使って、真ん中の簡単な論理処理をしなければなりません.タイプ変換はまだ関連しています
2.できるだけパラメトリッククエリーを使用します!
3.少なくとも1つの引用符をフィルタリングすることに注意してください(実際にはパラメトリッククエリーを使用すれば、フィルタリングしなくても大丈夫ですが、私はやはり習慣的にフィルタリングします).
4.エラーをユーザーに直接暴露しないでください.これは注入を防ぐためだけでなく、ユーザー体験の問題でもあります.OnErrorイベントを書き換え、継承することで、うまく処理できます!
駅をまたぐことに対して、耳を洗うのが面倒で、濾過はずっと葛藤しているもので、濾過が厳しすぎて、正常な使用に影響して、濾過がよくなくて、また安全問題を引き起こします!私が書いたばかりのフィルター類を出して、その中にまだ考えていないところがあるかもしれませんが、皆さんに教えてもらいたいです.
public static string StringFilters(string input)
{
if (string.IsNullOrEmpty(input))
return input;
/* */
input = input.Replace("", "&#");// javascript:alert('XSS')
input = Regex.Replace(input, @"javascript:", "Javascript:", RegexOptions.IgnoreCase);// JS :javascript:alert('XSS');
input = Regex.Replace(input, @"vbscript:", "Vbscript:", RegexOptions.IgnoreCase);// JS :vbscript:msgbox('XSS');
input = Regex.Replace(input, @"j *a *v *a *s *c *r *i *p *t:", "Vbscript:", RegexOptions.IgnoreCase);// :java script:alert('XSS');
input = Regex.Replace(input, @"\/\*[sS]*\*\/", "", RegexOptions.IgnoreCase);
input = Regex.Replace(input, @"expression", "expression", RegexOptions.IgnoreCase);
input = Regex.Replace(input, @"]*>", "S:yle", RegexOptions.IgnoreCase);
input = Regex.Replace(input, @"]*object[^>]*>", "objec&$58", RegexOptions.IgnoreCase);//