ウェブサイトでよく見られる**及び防護技術

4441 ワード

1、SQL注入
 
SQL注入は、フォームフィールドにSQL文を入力することによって、通常のSQL実行に影響を及ぼす悪意的な***である。もう一つは、SQL注入機構と同じSQL注入機構を持つsystem()またはexec()コマンドによって注入されるが、shellコマンドだけに対して。
 
$username= $_POST['username]; 
  • ドルquery= プロジェクト * from auth where username = '".$username.'' 
  • echo$query; 
  • $db= newmysqli('local host'は、 'デモ ‘デモ ‘demodemo;; 
  • $レスリング= $db->query($query) 
  • if($result& ) $レスリング->num ows { 
  •    echo「ロギング」 in success fully"; 
  • } else{ 
  •    echo「Login」 failed"; 
  • } 
  •  
    上のコードは、最初の行にフィルタまたは転送されたユーザーが入力した値($u POST['username])がないため、照会に失敗したり、データベースが壊れたりする可能性があります。これはあなたのSQL文を他のものに変換することが含まれているかどうかを確認します。
     
    SQL注入防止
    オプション:
    mysql_uraluescape_ustringを使ってデータをフィルタリングします。
    各データが正しいデータタイプかどうかを手動で確認します。
    前処理文を使用して変数をバインドします。
    用意された前処理文を使います。
    データとSQL論理を分離する
    前処理文は自動的にフィルタリングされます。
    これをコード規範として、チーム内の新人が上記の問題に遭遇しないように助けることができます。
     
     
    $query= 'プロジェクト name ディテール from シティ where countrycode=?' 
  • if($stmt= $db->prepare($query) ) 
  •    $countrycode= 'hk; 
  •    $stmt->bindayuaram(「s」、 $countrycode)  
  •    $stmt->execute(); 
  •    $stmt->bindursult($name) $district; 
  •    while( $stmt($stmt->fetch() ){ 
  •        echo$name.' '.$districk; 
  •        echo; 
  •    } 
  •    $stmt->close(); 
  • )   
    2、
    XSS***
     
    XSSは、クライアントスクリプト(通常はJavaScript)を含むいくつかのデータをユーザーによって入力します。フィルタなしで別のウェブページにデータを出力します。このスクリプトは実行されます。
    ユーザから提出されたテキストの内容を受信する 
     
     
  • if(filexxists('comments') { 
  •    $comments= get('comments') 
  • } else{ 
  •    $comments= ''; 
  • } 
  •  
  • if(isset($u POST['commment])) { 
  •    $comments.= ''. $_POST[コメント]; 
  •    savekucontens(comments)は、 $comments; 
  •  
  •  
    コンテンツをユーザに出力します。 
     
    <フォームm action='xss.php'method='POST' 
  • Enter ヨール comments here:  
  • <textarea name='commment'>textarea>  
  • <input type='submit'value='Post コメント/> 
  • form> 
  •  
  • php echo$comments; ?>   
    どんなことがありますか?
    うるさい弾戸
    更新またはリダイレクト
    ウェブページまたはフォームを破損しました。
    クッキーを盗む
    AJAX(XMLHttpRequest)
     
    XSS***防止
    XSS***を防止するために、PHPのhttmlentities()関数を使ってフィルタリングしてブラウザに出力します。httmlentities()の基本的な使い方は簡単ですが、高度なコントロールもたくさんあります。XSS速診表を参照してください。
     
    3、
    セッション固定
    セッションセキュリティは、PHPSESSIDが推測しにくいと仮定しています。しかし、PHPはCookieまたはURLを介してセッションIDを受け入れることができます。したがって、被害者をだますために、特定のセッションIDまたは釣り**を使用することができます。
     
    4、
    会議の逮捕と乗っ取り
    これは、セッション固定と同じ考えですが、セッションIDを盗むことに関連しています。セッションIDがCookieに格納されていれば、***者は、XSSとJavaScriptを介して盗むことができます。セッションIDがURLに含まれていれば、嗅ぎ込みまたはプロキシから取得することもできます。
    会話の捕獲とハイジャックを防ぐ
    IDを更新します
    セッションを使用する場合は、SSLを使用するようにしてください。
     
    5、
    駅をまたいで偽造を要求する(CSRF)
    CSRF***とは、ページからの要求を指しています。ウェブサイトの信頼ユーザーのように見えますが、故意ではありません。多くのバリエーションがあります。例えば、次のような例があります。 
     

     
    サイト間の偽造を防止する
    一般的には、ユーザーがあなたのフォームから来て、各フォームにマッチして送信することを確認します。 
    適切なセキュリティ対策は、ユーザセッションに適用され、例えば、各セッションにIDを更新し、ユーザにSSLを使用する。
    別の1回限りのトークンを生成し、フォームに埋め込み、セッション中に保存し、送信時にそれを確認する。
     
    6、
    コード注入
    コード注入は、コンピュータの脆弱性を利用して無効なデータを処理することによって引き起こされます。問題は、任意のコードを実行しないと、通常はファイルに含まれます。悪いコードを書くと、リモートファイルが含まれて実行されます。例えば、多くのPHP関数は、requireのようなURLやファイル名を含みます。
     
     
    <form>Choose ホーム: 
  •    <プロジェクト name = ホーム; 
  •        <オプト value = ブルー>Blue option> 
  •        <オプト value = green>グリーンノプション> 
  •       <オプト value = red>Redoption> 
  •    select> 
  •     
  • form> 
  • php 
  •    if($theme) { 
  •        require($theme.'.txt') 
  •    } 
  • ?   
    上記の例では、ユーザが入力したファイル名またはファイル名の一部を伝達することにより、「http:/」で始まるファイルを含む。
    コード注入防止
    フィルタユーザー入力
    php.iniでは、allowuurlufopenとallowuurl includeを無効にします。これはrequire/include/fopenのリモートファイルを無効にします。
     
    その他の一般原則
    1.サーバの構成に依存しないで、あなたのアプリケーションを保護してください。特にウェブサーバ/PHPはあなたのISPによって管理されます。あるいはあなたのサイトが他のところに移動/配置される可能性があります。将来は他のところに移動/配置します。サイトコードにセキュリティ意識のあるチェック/ロジック(HTML、JavaScript、PHPなど)を埋め込みください。 
    2.サーバ端のセキュリティスクリプトを設計する: 
    —例えば、シングル行で実行する→シングルポイントの認証とデータのクリーンアップ 
    —例えば、すべてのセキュリティ敏感ページにPHP関数/ファイルを埋め込み、すべての登録/セキュリティロジックチェックを処理します。
    3.あなたのコードの更新を確保し、最新のパッチを適用します。
    転載先:https://blog.51cto.com/maxmas/1005843