私はかつて教師にプライベートか保護されているかのようにプロパティーの可視性をいつも使用していたのかと疑問を呈しました。彼女は私に、これを公開するよりも安全だと答えましたが、私は本当にこの答えに自信がありません。だから、最終的なユーザーが私のクラスを操作する方法を持たないことを保証しても、パブリックプロパティは実際にプロパティに対して安全性が低いのですか?どうして ?PHP - 公開された可視性は安全性が低いですか?
答えて
パブリックプロパティ自身でより安全か安全でないではありませんを参照してください。しかし、多くの公共財産を所有すると、間接的に安全性の低いアプリケーションにつながる可能性があります。
多くのパブリックプロパティを持つクラスは、自分のメソッドではなくコードの他の部分でこれらのプロパティを操作できるため、推論が難しくなります。このようにして、アプリケーション全体のセキュリティを管理することが難しくなります。
他の言葉では:公共の財産は、より大きなattack surfaceにつながる可能性があります。
いいえ、絶対的なごみです。それはもはや安全です。
ユーザーが望んでいた場合、彼らはオブジェクトの上に保護/プライベートプロパティにアクセスすることができます
class Car {
protected $engine = 'V8';
}
$reflector = new ReflectionClass('Car');
$engineProperty = $reflector->getProperty('engine');
$engineProperty->setAccessible(true);
$maserati = new Car;
echo $engineProperty->getValue($maserati); // echoes "V8"
$engineProperty->setValue($maserati, 'I4');
echo $engineProperty->getValue($maserati); // echoes "I4"
だから、明らかに、何のセキュリティ上の利点はありません。
利点は、クラスが相互作用するために設計された関数とプロパティをマークすることでエンドユーザーの役に立ちます。彼らが望むならば、開発者はクラスの内部を完全に変更することができますが、それを呼び出すコードは変更する必要はありません。彼らが本当にしたい場合は、クラスのユーザーはそれについてはうんざりすることができますが、それは動作しない場合、彼らの問題です!
私はこれを考えていましたが、わかりません。私の先生は、私は、常にプライベート/保護された物件を作り、ゲッターとセッターだけを使って外部の範囲とやりとりし、公共の可視性を使わないようにしなければならないと言いました。私は正しい値が設定されることを保証します)。 –
@BrunoCorrêaZimmermann私は公共の制限の概念全体には同意しません。あなたがこの人/会社のために働いていて、それが社内の基準であったならば、私はあなたがそれに固執しなければならないと言っていますが、一般的にこの方法を制限することは本当の利益のために限定しています「セキュリティ」の観点からではありません。 – Rasclatt
ありがとう、あなたは私の疑問を解決しました –
これはセキュリティとは関係ありません。 カプセル化は、あなた/あなたの先生が探している単語かもしれません。
は、他の回答が指摘したようにWhat is encapsulation? How does it actually hide data?
継承は、カプセル化の影響を受ける別の領域です。
子クラスを持つ基本クラスを拡張することによって、新しい機能がアプリケーションに追加されることがよくあります。ソフトウェアプロジェクトで作業するために雇われた新しい開発者は、通常、他の開発者が作成したクラスのパブリックメソッドを使用します。
方法は、それが私の知る限りでは、将来の開発者
- 1. mayaカスタムイメージプレーンの公開可視カスタム属性
- 2. PHP 5.3.xの方がPHP 5.6.xより安全性が低い
- 3. サービスの可視性から開始されたアクティビティnull
- 4. libにlibをダウンロードするよりも安全性が低いですか?
- 5. javamainの安全性の低いアプリなしでGmailにログイン
- 6. ログインが安全でない可能性があります
- 7. 透明性は複合パターンの安全性よりも重視されるのはなぜですか?
- 8. 公開する属性と公開しない属性は何ですか?
- 9. ブースト圧縮されたマトリックススレッドの安全性ですか?
- 10. PHPクラスの可視性
- 11. Angular2ネストされた可視性
- 12. ネストされたメンバーのKotlin可視性
- 13. PHPマニュアルOOPの可視性の例は、 - 誰かがそれは
- 14. 安全性の低いレジストリをDockerに追加
- 15. PHPの保護されたプライベートな可視性
- 16. 安全性の低いHTTPサーバーの前で、IISを安全なリバースプロキシとして使用しますか?
- 17. 未払いの安全性
- 18. Summernoteの安全性
- 19. メモリの安全性の脆弱性とは何ですか?
- 20. PHPでは、デフォルトでクラスの可視性は何ですか?
- 21. Javascriptに「安全でない公開」がありますか?
- 22. このページのActiveXコントロールは安全でない可能性があります
- 23. 公開情報を公開ディレクトリに保存するのは安全ですか?
- 24. iOSアプリケーションで文字列が安全でない可能性があります。
- 25. SSRS可視性
- 26. 可視性
- 27. LibGDX可視性
- 28. 安全性と拡張性を得る
- 29. DOMデータ-X属性の互換性 - これは安全ですか?
- 30. Magentoアップグレードスクリプトによって作成された新しい属性の可視性
で上書きすることができます誤ってパブリックとして宣言されている場合は、任意の多かれ少なかれ安全ではありませんが、それは、クラス全体の機能の利用を制限する方法のより多くのです。 – Rasclatt