2021-05-14 ReDoS, DDoS, DoS / Ruby private vs protected
いろんなDoS
Denial of Service Software Attack | OWASP Foundation
基本のDoSは下記の通り。
The Denial of Service (DoS) attack is focused on making a resource (site, application, server) unavailable for the purpose it was designed
Regular expression Denial of Service - ReDoS Software Attack | OWASP
正規表現によるDoS攻撃のこと。
The Regular expression Denial of Service (ReDoS) is a Denial of Service attack, that exploits the fact that most Regular Expression implementations may reach extreme situations that cause them to work very slowly (exponentially related to input size). An attacker can then cause a program using a Regular Expression to enter these extreme situations and then hang for a very long time.
インターネット用語1分解説~DDoSとは~ - JPNIC
分散型DoS攻撃はDDoS。
「DDoS (「ディードス」と読みます)」とは、 「Distributed Denial of Service (分散型サービス妨害)」の略で、 インターネットに接続した多数のホストを利用して、特定のネットワークやWebサービスを、 意図的に利用できないようにする攻撃行為です。
Ruby private vs protected
Ruby の private と protected 。歴史と使い分け - Qiita
Java の private と protected
- public => どこからでもアクセス可能
- protected => クラス内、同一パッケージ、サブクラスからアクセス可
- private => クラス内のみアクセス可能
Ruby の private と protected
- public に設定されたメソッドは制限なしに呼び出せます。
- private に設定されたメソッドは関数形式でしか呼び出せません。 ただし self.foo のように self. と書かれている場合は呼び出すことができます。
- protected に設定されたメソッドは、そのメソッドを持つオブジェクトが selfであるコンテキスト(メソッド定義式やinstance_eval)でのみ呼び出せ ます。
private と protected は同じ目的(そのメソッドを隠し外から呼べないようにする)で使用されますが、以下のような例では、private は使えず、protected を利用する必要があります。正確には、private には関数を定義する目的があるが、呼び出し制限の目的でも(ここに挙げた制限があるにもかかわらず) protected よりは private が使われることの方が多いようです。
class Foo
def _val
'val'
end
protected :_val
def op(other)
# other も Foo のインスタンスを想定
# _val が private だと関数形式でしか呼べないため
# このように利用できない
self._val + other._val
end
end