フェイス質問コンピュータネットワーク1

1差、HTTPおよびHTTPSの

  HTTPプロトコルは、TCP、クリアテキストの送信の上で動作し、クライアントとサーバが他の身元を確認することはできません。HTTPSは、SSL上で実行するSSL(セキュア・ソケット・レイヤー)は、HTTPシェルを、身に着けている、SSLはTCPの上で動作し、ありますHTTP暗号化および認証メカニズムを追加します。次のような違いは、両者の間に存在します。

  • 異なるポート:異なるHTTPおよびHTTP接続を使用する、ポートが同一でない、前者は443であり、80です。

  • リソース消費:による接着減算処理と比較し、HTTP通信、HTTPS通信は、より多くのCPUとメモリリソースを消費します。

  • コスト:HTTPS通信は、後のための一般的な必要性に証明書認証機関を必要とする、 
      
    暗号化HTTPSは暗号化メカニズムで、共通鍵暗号と公開鍵暗号と混合します。


2、対称暗号化と非対称暗号化

  対称鍵暗号は、暗号化と復号化には同じ鍵を使用することを意味し、このアプローチの最大の問題は、あなたのパートナーにどのようにしっかりとキーの質問を送信するための鍵であり、非対称暗号化は、ペアを使用することを意味します非対称鍵、つまり公開鍵と秘密鍵は、公開鍵は自由に公表することができますが、秘密鍵は自分自身だけに知られています。一つの暗号文を解読するために、自身の秘密鍵を使用して、暗号化された情報を受け取った後、相手の公開鍵暗号を使用して他を送信しました。

  非対称暗号化方式を解読するための秘密鍵を送信する必要がないので、安全性を保証することができますので、しかし、それは非常に遅く、対称暗号化に比べてあるので、我々はまだメッセージを配信するために、対称暗号化を使用する必要がありますが、対称暗号化を使用してキーは、私たちは、非対称暗号化を介して送信することができます。


3、4と3ウェイハンドシェイクが手を振って

 。(1)スリーウェイハンドシェイク(私はあなたが本当に私はそれをリンクしたい、あなたがリンクを構築したい、と私は本当にあなたが、成功のリンクを構築したいです):

  • 最初のハンドシェイク:クライアントSYNフラグビットがランダムに生成された値の配列= J、1に設定され、パケットがサーバーに送信され、クライアントは、確認サーバを待って、SYN_SENT状態に入ります。

  • 第二のハンドシェイク:サーバが接続を確立するためにクライアント要求を知っているフラグビットSYN = 1からパケットデータを受信し、サーバSYNとACKフラグビットがACK = J + 1、ランダムに生成された値の配列= K 1に設定され、クライアントへの接続要求を確認するために、データパケットは、サーバーがSYN_RCVD状態になります。

  • 第三のハンドシェイク:ACKのJ + 1は、ACKは、正しいACKフラグが1にセットされ、次いで場合、ACK = K + 1であり、パケットがサーバーに送信されているかどうかをクライアントが確認、肯定応答を受信し、サーバーをチェックしたack K + 1かどうかを、ACKは1、正しい場合は、接続が確立され、クライアントで、サーバーが3ウェイハンドシェイクを完了し、ESTABLISHED状態に入り、その後、クライアントとサーバー間でデータを転送するために始めることができます。

                スリーウェイハンドシェイク.PNG、12.4kB


 。(2)の4倍と手を振った(私はあなたがリンクを解除したい。良い、私はそれを破るために持っていて、リンクを破る;良い、それを破ります。):

  • 最初の波:クライアントはFINを送信し、データ転送クライアントサーバー入札を閉じるため、クライアントはFIN_WAIT_1状態になります。

  • 第二波:サーバは、クライアント、受付番号+1のための確認応答番号を(同じSYN、FINシーケンス番号を占有する)を送信するFIN、ACKを受信すると、サーバーはCLOSE_WAIT状態になります。半閉鎖状態で、このTCP接続で、つまり、クライアントが送信するデータがないが、サーバーがデータを送信した場合、クライアントはまだ受けて。

  • 第三の波:サーバーはクライアントサーバーのデータ転送を閉じるため、FINを送信し、LAST_ACKサーバーは状態になります。

  • 第四の波:クライアントは、FINを受信し、クライアントは確認応答番号の数+ 1を受信するために、TIME_WAIT状態に入り、その後、サーバにACKを送信し、サーバはCLOSED状態は、4つの完全な波を入射します。

                四振っ.PNG、12.6kB


4. TCP接続は3ウェイハンドシェイクを必要とする理由、二人は何を、なぜすることはできませんか?

  リンクを防ぐためにエラーが発生し、突然のサーバーに転送された要求パケットを有効期限が切れています。

  接続されたクライアントは、要求メッセージがサーバーに到達する前にリンクを解除した後、いくつかの時間に遅れが生じ、失ったが、ネットワークノードの長期滞在にされていない送信します。これは、サーバーが誤って、これがクライアントによって発行された新しいリンク要求だと思いれるので、彼がクライアントに確認応答パケットを送信し、リンクを設置することで合意しました。「スリーウェイハンドシェイク」、限り、サーバーが確認パケットを送信する場合、新しいリンクが確立されています。クライアントがこの時点で要求を行うとして、それはそれは確認サーバを無視し、またサーバーと通信していないので、リンクを確立できませんでした。その後、クライアントサーバーを待っているサーバは、特定のリソースを無駄にされるように、要求されています。「スリーウェイハンドシェイク」場合はサーバーがクライアントからの確認を受信しないので、この場合には、あなたは、クライアントがリクエストの確立を必要としない、それがリンクを確立していないことを知っているだろう。


5、伝送の信頼性を確保する方法についてTCPプロトコル

  TCPは接続指向、信頼性の高いバイトストリームのサービスを提供しています。このうち、2つの接続指向は、互いにデータを交換する前に、TCP(通常、クライアントとサーバ)を使用するアプリケーションは、最初のTCP接続を確立しなければならないことを意味します。TCP接続では、2つだけの当事者が互いに通信すると、バイトストリームサービスアプリケーション交換は、二つのことを意味する8ビットバイトのTCP接続、TCPバイトストリームが挿入されていないレコード識別子によってバイトストリームです。

  信頼性のために、TCPは、によって確保されます。

  • パケットチェックサム:チェックはパケット誤りである場合、オブジェクトは、データ送信処理における任意の変化を検出し、セグメントは、次に、TCP送信側は、データ再送データの終了後にタイムアウトになり、与えられていない応答して廃棄されます。

  • 疾患のパケット並べ替え:TCPセグメントので、IPデータグラムの送信のような、IPデータグラムに到達するには、順不同であってもよいので、TCPセグメントの到着はまた、順不同であってもよいです。TCPは、アプリケーション層への前にシーケンスデータのうち、並べ替えます。

  • 重複したデータを破棄:繰り返しデータの場合は、重複したデータを破棄することが可能です。

  • 応答メカニズム:TCP接続はTCPデータのもう一方の端の底から受信した場合、それは確認応答を送信します。この確認は、通常、第二の割合を延期、すぐに送信されません。

  • 再送タイムアウト:TCPセグメントを送信すると、それはタイマーを開始し、このセグメントの受信を確認するために、宛先のを待ちます。あなたが確認を受信できない場合は、このセグメントを再送します。

  • フロー制御:TCP接続は、各当事者は、バッファスペースの固定サイズを持っています。受信TCPは、フローが制御されて速い遅いホストバッファオーバーフローをもたらすホストを防ぐことができる、データを受信することができ、送信および受信側バッファのもう一方の端を可能にします。フロー制御プロトコルTCPは、スライディングウィンドウの変数のサイズを使用しています。


6、クライアントは、現在進行中のリンクが起こる要求しますか?DDOS攻撃(サービス拒否の分散)?

  サーバは、要求ごとにリンクを作成し、その確認メッセージを送信し、確認するためにクライアントを待ちます


1)、DDoS攻撃

  • クライアントは、サーバーのリンクに要求パケットを送信します
  • サーバーは、クライアントに応答パケットを送信します
  • サーバへの確認応答パケットを送信しないクライアントは、サーバーがクライアントからの確認を待っています

2)、DDoS攻撃の予防的アプローチ(無完治、我々はTCPを使用しない場合を除きます)

  • 同時に、ハーフオープンSYNリンクの数を制限します
  • SYNハーフタイムアウトリンク時間を短縮
  • 不要なサービスをオフにします

7、GETとPOSTの違い

  GETとPOSTは、私たちの2つの一般的なHTTPメソッドが、両者の違いは、以下の5つの側面が含まれています。

。機能性の観点から、一般的にサーバからリソースを取得するために使用されてGET(1)、POSTは、一般的にサーバ上のリソースを更新するために使用されます。

(2)。RESTサービスの観点からは、GETリソース要求への各変更は同じではありませんので、必ずではなくPOSTの冪等よりも、同じデータを取得し、それは同じリソースから読み込まれ、冪等であります;さらに、サーバー上のリソースを変更しませんGET、およびサーバリソースのPOSTが変更されます。

次に、(3)要求パラメータビューの正式な観点から、要求データがGET URLに取り付けられ、要求データが間&パラメータに接続されている、に?URLためにHTTPリクエストメッセージのヘッダに配置された分割データを送信されようとしています。特に、データは、英語の文字/番号で、として送信される場合、他の/漢字場合スペースが、+に変換される場合、それ以外の場合は、(アプリケーション/ x-www-form-urlencodedでMIME文字列として符号化されます得られたBASE64は、直接文字列を暗号化:ASCII 16進表現でシンボルのXX XX%の%E4%のBDの%A0%のE5の%A5%のBDを、); POSTリクエストが送信されますデータは、要求内のHTTP要求パケットの本体内に配置されます。

(4)。セキュリティの面では、GETのPOSTの安全性よりも安全性は、データ提出GET要求がURLにクリアテキストで表示されますので、リクエストパラメータとPOSTリクエストボディは比較的安全な内に充填されました。

(5)を参照するための要求の大きさから、GET要求は、ブラウザまたはサーバURL長の長さを制限するために制限されて伝送されるデータの少量を可能にする、POSTリクエストにはサイズ制限はありません。


1)。URLエンコードされた要求に意義をGET

  私たちは、アフリカ西部の文字URLはGETリクエストでエンコードされることを知って、そうすることの目的は、あいまいさを避けるためです。以下の例を参照してください、

  たとえば、「NAME1 = VALUE1&NAME2 = value2のは、」私たちは、サーバー側にクライアントからのデータを解析について話しています。まず、それは次のように表現されているコンピュータによって、ASCIIの文字列:

  1.  
    6E616D6531 3 D 76616C756531 26 6E616D6532 3 D 76616C756532
  2.  
    6E616D6531:NAME1
  3.  
    3 D:=
  4.  
    76616C756531:VALUE1
  5.  
    26:&
  6.  
    6E616D6532:NAME2
  7.  
    3 D:=
  8.  
    76616C756532:VALUE2
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

  サービスの終了後にデータを受信した後に食べるようにバイトでバイトストリームのバイトを横断して、このバイトの3Dを食べたときに、サーバーは、さらにフロントはバイトのキーを食べることを知っている、となりますあなたが上を通過クライアントのパラメータを解析できるように、26が発生した場合、食べる、ちょうど間を食べるために26からサブセクションの3Dは、値のキーです。

  今の質問は、私たちのパラメータ値場合=特殊文字または&どのように行うには、この時間が含まれて考えますか?たとえば、値1 "VA&LU = E1" の文字列の値である "NAME1 = VALUE1" は、これは送信中の実際の "NAME1 = VA&LU = E1" となります。このように、我々の意図は、唯一のキーと値のペアですが、サーバーは、それはこのように曖昧さを作成し、2キーと値のペアに解決します。

  だから、どのようにそれの曖昧さに起因する上記の問題を解決するには?解決策は、URLエンコードするためのパラメータがある:例えば、我々は、上記URLの曖昧な文字は結果の後にエンコードされます:「NAME1 = VA%26lu% 3D」を、 そうサーバは「%」の中で言葉を続けます通常バイト部として、個々のパラメータ値の組または区切り文字として使用されていません。URLエンコードについての詳細は、参照の私のブログ記事「中国の文字エンコードとデコードのURLDecoderのとのURLEncoderを使用したが、」ここでは言及されていません。


8違い、TCPとUDP、

  TCP(伝送制御プロトコル)およびUDP(ユーザデータグラムプロトコル)プロトコルは、トランスポート層プロトコルであって、それらの間の区別です。

  • TCPは、コネクション型、UDPはコネクションレスです。

  • TCPは信頼性があり、UDPは信頼性がありません。

  • TCPは多く、多対多通信モードへの通信、UDPのサポート一から一、1を指すようにポイントをサポートしています。

  • TCPは、バイト指向のストリームで、UDPはメッセージ指向です。

  • TCPの輻輳制御機構と、メディア通信のためのUDPなし輻輳制御。

  • TCPヘッダのオーバーヘッド(20バイト)UDPヘッダ(8バイト)のオーバーヘッドよりも大きくなっています。


9、TCPの輻輳処理

  コンピュータのネットワーク帯域幅、スイッチ・ノードとバッファは、ネットワーク・プロセッサのすべてのリソースです。特定の時点では、利用可能なリソースの一部を超えるネットワークリソースの需要が提供することができたときに、ネットワークのパフォーマンスは、このような状況は、渋滞と呼ばれ、劣化します。輻輳制御は、これはネットワーク内のリンクやルータが過負荷になっていない作ることができ、過剰な注入データネットワークを防ぐためです。後者は、トラフィック制御ポイントを指す様々なフロー制御および輻輳制御が、前者は、グローバルなプロセスであることに留意されたいです。輻輳制御方法は以下の4つです。


1)スロースタート:それは徐々に輻輳ウィンドウのサイズを増やす小型から大へと言うことです、ネットワークの輻輳のレベルを検出するために、大量のデータの送信を開始しないでください。


2)輻輳回避:輻輳回避アルゴリズムは、RTTが倍増するのではなく、輻輳ウィンドウcwndを送信者に加えて1を入れて往復時間を介して各は、つまり、輻輳ウィンドウ遅い成長を可能にするので、直線的に輻輳ウィンドウ遅い成長の法則。

          スロースタートと輻輳回避.PNG、90.3kB


3)高速再送:受信者によって発行された高速な再送要求は、すぐに彼らが送信されるまで待つ可能性セグメントは反対側に到達しないとすぐに知るために、送信者を有効にする)とないようにするために(繰り返し確認した後、セグメントの障害を受けますデータをピギーバック。高速再送アルゴリズムは限り送信者としてすぐに他のセグメントは、まだ受け取っていない再送信ではなく、設定した時間が満了した再送タイマを待ち続けなければならない三つの連続重複確認応答を受け取り、指定します。

          高速再送.JPG、42.3kB


4)高速リカバリ:高速再送とも関連して使用される高速回復アルゴリズム、送信者が3つの連続で重複確認応答を受信したとき、それは「乗算ダウン」アルゴリズム、しきい値SSTHRESHを半分にではなく、次を実行しますスロースタートアルゴリズムを実行します。ネットワークの輻輳が発生した場合、それはいくつかの重複確認応答を受信しませんので、送信者は現在、ネットワークの輻輳を考えてないかもしれません。それではスロースタートアルゴリズムを実行しませんが、CWNDのサイズはSSTHRESHに設定され、その後、輻輳回避アルゴリズムを実行します。

          高速リカバリ.JPG、52.9kB


10、ページへのURLからの入力を取得するプロセス

  。(1)ブラウザは、DNSは、対応するIPアドレスを取得し、照会:具体的なプロセスは、ローカルDNSサーバにローカル・ホスト・ファイルとクエリを読んで、ブラウザの検索、独自のDNSキャッシュ、DNSキャッシュの検索操作システムを含みます。ローカルDNSサーバへのクエリの場合、ドメイン名は、DNS(この権威を解決)を完了するために、クライアントにローカルに設定されたゾーンのリソース、分析結果に含まれる照会する場合は、ローカルDNSサーバーを照会するドメイン名が地域を助けることができなかった場合解像度が、サーバーがURLのマッピング関係をキャッシュしているが、これは、IPアドレスのマッピング、完全なドメイン名解決(これは解決する権限を持っていない)と呼ばれています。ローカルドメインネームサーバは、URLのマッピング関係をキャッシュしない場合は、その設定に応じて再帰クエリまたは反復クエリを開始します。

  。後、(2)対応するIPアドレスを取得するために、ブラウザは、ブラウザは、スリーウェイハンドシェイクを開始するためのリンクを確立するためにサーバに要求します。

  。(3)TCP / IPリンクが確立した後、ブラウザがサーバにHTTPリクエストを送信します。

  (4). 服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器;

  (5). 浏览器解析并渲染视图,若遇到对js文件、css文件及图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源;

  (6). 浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面。


11、Session、Cookie 与 Application

  Cookie和Session都是客户端与服务器之间保持状态的解决方案,具体来说,cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。


(1). Cookie及其相关API

  Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie,而客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器,服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

           Cookoe-HttpServletResponse.png-38.6kB

           HttpServletRequestの-cookie.png-8.6kB


(2). Session及其相关API

  同样地,会话状态也可以保存在服务器端。客户端请求服务器,如果服务器记录该用户状态,就获取Session来保存状态,这时,如果服务器已经为此客户端创建过session,服务器就按照sessionid把这个session检索出来使用;如果客户端请求不包含sessionid,则为此客户端创建一个session并且生成一个与此session相关联的sessionid,并将这个sessionid在本次响应中返回给客户端保存。保存这个sessionid的方式可以采用 cookie机制 ,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器;若浏览器禁用Cookie的话,可以通过 URL重写机制 将sessionid传回服务器。

           セッションHttpServletRequest.png-10.1kB


(3). Session 与 Cookie 的对比

  • 实现机制:Session的实现常常依赖于Cookie机制,通过Cookie机制回传SessionID;

  • 大小限制:Cookie有大小限制并且浏览器对每个站点也有cookie的个数限制,Session没有大小限制,理论上只与服务器的内存大小有关;

  • 安全性:Cookie存在安全隐患,通过拦截或本地文件找得到cookie后可以进行攻击,而Session由于保存在服务器端,相对更加安全;

  • 服务器资源消耗:Session是保存在服务器端上会存在一段时间才会消失,如果session过多会增加服务器的压力。

    Application(ServletContext):与一个Web应用程序相对应,为应用程序提供了一个全局的状态,所有客户都可以使用该状态。


(4). Application

  Application(Java Web中的ServletContext):与一个Web应用程序相对应,为应用程序提供了一个全局的状态,所有客户都可以使用该状态。


12、SQL 注入

  SQL注入就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

1). SQL注入攻击的总体思路

  (1). 寻找到SQL注入的位置 
  (2). 判断服务器类型和后台数据库类型 
  (3). 针对不通的服务器和数据库特点进行SQL注入攻击


2). SQL注入攻击实例

  比如,在一个登录界面,要求输入用户名和密码,可以这样输入实现免帐号登录:

  1.  
    用户名: ‘ or 1 = 1 --
  2.  
    密 码:
  • 1
  • 2
  • 1
  • 2

  用户一旦点击登录,如若没有做特殊处理,那么这个非法用户就很得意的登陆进去了。这是为什么呢?下面我们分析一下:从理论上说,后台认证程序中会有如下的SQL语句:String sql = “select * from user_table where username=’ “+userName+” ’ and password=’ “+password+” ‘”; 因此,当输入了上面的用户名和密码,上面的SQL语句变成:SELECT * FROM user_table WHERE username=’’or 1 = 1 – and password=’’。分析上述SQL语句我们知道, 
username=‘ or 1=1 这个语句一定会成功;然后后面加两个-,这意味着注释,它将后面的语句注释,让他们不起作用。这样,上述语句永远都能正确执行,用户轻易骗过系统,获取合法身份。


3). 应对方法

(1). 参数绑定

  使用预编译手段,绑定参数是最好的防SQL注入的方法。目前许多的ORM框架及JDBC等都实现了SQL预编译和参数绑定功能,攻击者的恶意SQL会被当做SQL的参数而不是SQL命令被执行。在mybatis的mapper文件中,对于传递的参数我们一般是使用#和$来获取参数值。当使用#时,变量是占位符,就是一般我们使用javajdbc的PrepareStatement时的占位符,所有可以防止sql注入;当使用$时,变量就是直接追加在sql中,一般会有sql注入问题。

(2). 使用正则表达式过滤传入的参数


13、 XSS 攻击

  XSS是一种经常出现在web应用中的计算机安全漏洞,与SQL注入一起成为web中最主流的攻击方式。XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些脚本代码嵌入到web页面中去,使别的用户访问都会执行相应的嵌入代码,从而盗取用户资料、利用用户身份进行某种动作或者对访问者进行病毒侵害的一种攻击方式。


1). XSS攻击的危害

  • 盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号

  • 控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力

  • 盗窃企业重要的具有商业价值的资料

  • 非法转账

  • 强制发送电子邮件

  • 网站挂马

  • 控制受害者机器向其它网站发起攻击


2). 原因解析

  主要原因:过于信任客户端提交的数据!

  解决办法:不信任任何客户端提交的数据,只要是客户端提交的数据就应该先进行相应的过滤处理然后方可进行下一步的操作。

  进一步分析细节:客户端提交的数据本来就是应用所需要的,但是恶意攻击者利用网站对客户端提交数据的信任,在数据中插入一些符号以及javascript代码,那么这些数据将会成为应用代码中的一部分了,那么攻击者就可以肆无忌惮地展开攻击啦,因此我们绝不可以信任任何客户端提交的数据!!!


3). XSS 攻击分类

(1). 反射性XSS攻击 (非持久性XSS攻击)

  漏洞产生的原因是攻击者注入的数据反映在响应中。一个典型的非持久性XSS攻击包含一个带XSS攻击向量的链接(即每次攻击需要用户的点击),例如,正常发送消息:

http://www.test.com/message.php?send=Hello,World!
  • 1
  • 1

接收者将会接收信息并显示Hello,World;但是,非正常发送消息:

http://www.test.com/message.php?send=<script>alert(‘foolish!’)</script>!
  • 1
  • 1

接收者接收消息显示的时候将会弹出警告窗口!


(2). 持久性XSS攻击 (留言板场景)

  XSS攻击向量(一般指XSS攻击代码)存储在网站数据库,当一个页面被用户打开的时候执行。也就是说,每当用户使用浏览器打开指定页面时,脚本便执行。与非持久性XSS攻击相比,持久性XSS攻击危害性更大。从名字就可以了解到,持久性XSS攻击就是将攻击代码存入数据库中,然后客户端打开时就执行这些攻击代码。

例如,留言板表单中的表单域:
<input type=“text” name=“content” value=“这里是用户填写的数据”>
  • 1
  • 1

正常操作流程是:用户是提交相应留言信息 —— 将数据存储到数据库 —— 其他用户访问留言板,应用去数据并显示;而非正常操作流程是攻击者在value填写:

<script>alert(‘foolish!’);</script> <!--或者html其他标签(破坏样式。。。)、一段攻击型代码-->
  • 1
  • 1

并将数据提交、存储到数据库中;当其他用户取出数据显示的时候,将会执行这些攻击性代码。


4). 修复漏洞方针

  漏洞产生的根本原因是 太相信用户提交的数据,对用户所提交的数据过滤不足所导致的,因此解决方案也应该从这个方面入手,具体方案包括:

  • 将重要的cookie标记为http only, 这样的话Javascript 中的document.cookie语句就不能 
    获取到cookie了(如果在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击);

  • 表单数据规定值的类型,例如:年龄应为只能为int、name只能为字母数字组合。。。。

  • 对数据进行Html Encode 处理

  • 过滤或移除特殊的Html标签,例如: <script>, <iframe> , < for <, > for>, &quot for

  • 过滤JavaScript 事件的标签,例如 “οnclick=”, “onfocus” 等等。

      需要注意的是,在有些应用中是允许html标签出现的,甚至是javascript代码出现。因此,我们在过滤数据的时候需要仔细分析哪些数据是有特殊要求(例如输出需要html代码、javascript代码拼接、或者此表单直接允许使用等等),然后区别处理!


14、OSI网络体系结构与TCP/IP协议模型

  为了更好地了解计算机网络体系结构,笔者以两篇博客的篇幅来介绍这个计算机网络中最为重要的知识点,具体见《计算机网络体系结构综述(上)》 和 《计算机网络体系结构综述(下)》。下面只做简要的总结。

  在《计算机网络体系结构综述(下)》一文中,我们知道TCP/IP与OSI最大的不同在于:OSI是一个理论上的网络通信模型,而TCP/IP则是实际上的网络通信标准。但是,它们的初衷是一样的,都是为了使得两台计算机能够像两个知心朋友那样能够互相准确理解对方的意思并做出优雅的回应。现在,我们对OSI七层模型的各层进行简要的介绍:

          OSIネットワークアーキテクチャとTCPIPプロトコルモデル.PNG、51.3kB


1). 物理层

  参考模型的最低层,也是OSI模型的第一层,实现了相邻计算机节点之间比特流的透明传送,并尽可能地屏蔽掉具体传输介质和物理设备的差异,使其上层(数据链路层)不必关心网络的具体传输介质。


2). 数据链路层(data link layer)

  接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层。这一层在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。


3). 网络层

  将网络地址翻译成对应的物理地址,并通过路由选择算法为分组通过通信子网选择最适当的路径。

          データリンク層とネットワーク層の.png、58.4kB


4). 传输层(transport layer)

  在源端与目的端之间提供可靠的透明数据传输,使上层服务用户不必关系通信子网的实现细节。在协议栈中,传输层位于网络层之上,传输层协议为不同主机上运行的进程提供逻辑通信,而网络层协议为不同主机提供逻辑通信,如下图所示。

          ネットワーク層とトランスポート層の.png、52.8kB

  实际上,网络层可以看作是传输层的一部分,其为传输层提供服务。但对于终端系统而言,网络层对它们而言是透明的,它们知道传输层的存在,也就是说,在逻辑上它们认为是传输层为它们提供了端对端的通信,这也是分层思想的妙处。


5). 会话层(Session Layer)

  会话层是OSI模型的第五层,是用户应用程序和网络之间的接口,负责在网络中的两节点之间建立、维持和终止通信。


6). 表示层(Presentation Layer):数据的编码,压缩和解压缩,数据的加密和解密

  表示层是OSI模型的第六层,它对来自应用层的命令和数据进行解释,以确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。


7). 应用层(Application layer):为用户的应用进程提供网络通信服务


15、TCP和UDP分别对应的常见应用层协议

1). TCP对应的应用层协议

  • FTP:定义了文件传输协议,使用21端口。常说某某计算机开了FTP服务便是启动了文件传输服务。下载文件,上传主页,都要用到FTP服务。

  • Telnet:它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。如以前的BBS是-纯字符界面的,支持BBS的服务器将23端口打开,对外提供服务。

  • SMTP:定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。如常见的免费邮件服务中用的就是这个邮件服务端口,所以在电子邮件设置-中常看到有这么SMTP端口设置这个栏,服务器开放的是25号端口。

  • POP3:它是和SMTP对应,POP3用于接收邮件。通常情况下,POP3协议所用的是110端口。也是说,只要你有相应的使用POP3协议的程序(例如Fo-xmail或Outlook),就可以不以Web方式登陆进邮箱界面,直接用邮件程序就可以收到邮件(如是163邮箱就没有必要先进入网易网站,再进入自己的邮-箱来收信)。

  • HTTP:从Web服务器传输超文本到本地浏览器的传送协议。


2). UDP对应的应用层协议

  • DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。

  • SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。

  • TFTP(Trival File Transfer Protocal):简单文件传输协议,该协议在熟知端口69上使用UDP服务。


3). 图示

          それぞれTCPとUDP共通アプリケーション層プロトコルの.png-41.5kBに対応


16、网络层的ARP协议工作原理

  网络层的ARP协议完成了IP地址与物理地址的映射。首先,每台主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己ARP列表中是否存在该IP地址对应的MAC地址:如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个ARP响应数据包,告诉对方自己是它需要查找的MAC地址;源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。


17、IP地址的分类

  IP地址是指互联网协议地址,是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。IP地址编址方案将IP地址空间划分为A、B、C、D、E五类,其中A、B、C是基本类,D、E类作为多播和保留使用,为特殊地址。

  每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。A~E类地址的特点如下:

  • A类地址:以0开头,第一个字节范围:0~127;

  • B类地址:以10开头,第一个字节范围:128~191;

  • C类地址:以110开头,第一个字节范围:192~223;

  • D类地址:以1110开头,第一个字节范围为224~239;

  • E类地址:以1111开头,保留地址


1). A类地址:1字节的网络地址 + 3字节主机地址,网络地址的最高位必须是“0”

  一个A类IP地址是指, 在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。如果用二进制表示IP地址的话,A类IP地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”。A类IP地址中网络的标识长度为8位,主机标识的长度为24位,A类网络地址数量较少,有126个网络,每个网络可以容纳主机数达1600多万台。

  A类IP地址的地址范围1.0.0.0到127.255.255.255(二进制表示为:00000001 00000000 00000000 00000000 - 01111110 11111111 11111111 11111111),最后一个是广播地址。A类IP地址的子网掩码为255.0.0.0,每个网络支持的最大主机数为256的3次方-2=16777214台。


2). B类地址: 2字节的网络地址 + 2字节主机地址,网络地址的最高位必须是“10”

  一个B类IP地址是指,在IP地址的四段号码中,前两段号码为网络号码。如果用二进制表示IP地址的话,B类IP地址就由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是“10”。B类IP地址中网络的标识长度为16位,主机标识的长度为16位,B类网络地址适用于中等规模的网络,有16384个网络,每个网络所能容纳的计算机数为6万多台。

  B类IP地址地址范围128.0.0.0-191.255.255.255(二进制表示为:10000000 00000000 00000000 00000000—-10111111 11111111 11111111 11111111),最后一个是广播地址。B类IP地址的子网掩码为255.255.0.0,每个网络支持的最大主机数为256的2次方-2=65534台。


3). C类地址: 3字节的网络地址 + 1字节主机地址,网络地址的最高位必须是“110”

  一个C类IP地址是指,在IP地址的四段号码中,前三段号码为网络号码,剩下的一段号码为本地计算机的号码。如果用二进制表示IP地址的话,C类IP地址就由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是“110”。C类IP地址中网络的标识长度为24位,主机标识的长度为8位,C类网络地址数量较多,有209万余个网络。适用于小规模的局域网络,每个网络最多只能包含254台计算机。

  C类IP地址范围192.0.0.0-223.255.255.255(二进制表示为: 11000000 00000000 00000000 00000000 - 11011111 11111111 11111111 11111111)。C类IP地址的子网掩码为255.255.255.0,每个网络支持的最大主机数为256-2=254台。


4). D类地址:多播地址,用于1对多通信,最高位必须是“1110”

  D类IP地址在历史上被叫做多播地址(multicast address),即组播地址。在以太网中,多播地址命名了一组应该在这个网络中应用接收到一个分组的站点。多播地址的最高位必须是“1110”,范围从224.0.0.0到239.255.255.255。


5). E类地址:为保留地址,最高位必须是“1111”


18、IP地址与物理地址

  物理地址是数据链路层和物理层使用的地址,IP地址是网络层和以上各层使用的地址,是一种逻辑地址,其中ARP协议用于IP地址与物理地址的对应。


21、 常见状态码及原因短语

  HTTP请求结构: 请求方式 + 请求URI + 协议及其版本 
  HTTP响应结构: 状态码 + 原因短语 + 协议及其版本


  • 1×× : 请求处理中,请求已被接受,正在处理

  • 2×× : 请求成功,请求被成功处理 
    200 OK

  • 3××:リダイレクト要求を満たすためには、さらに処理されなければならない 
    301:永続的に搬送 
    仮転写:302 
    304:キャッシュされ

  • 4××:クライアントエラー、要求が正当ではない 
    不正な要求、要求の構文の質問:400 
    403:要求拒否 
    404:Accessクライアントのページは存在しません。

    • 5××:サーバー側のエラー、サーバーが正当な要求処理できない 
      内部サーバーエラー:500 
      503:サービスが利用できない、待って

おすすめ

転載: www.cnblogs.com/ldddd/p/11404836.html