植民地時代には同性間の性交渉に関する規定のなかったジンバブエでは、ロバート・ムガベ大統領が強力な反同性愛キャンペーンを展開している。ムガベの公的な場での同性愛批判の始まりは1995年8月のジンバブエ国際ブックフェアとされている。同フェアにてムガベは同性愛について観衆へ向けて以下の様に述べた。"...人間としての尊厳を傷つけている。自然に反していて、犬や豚よりも卑しい人々を見過ごすことに疑問を持たないのだろうか。犬や豚がしないとしたら、人間がするだろうか？我々には固有の文化があるのだから、人を人たらしめる伝統的価値観に立ち返ろう...。私たちが承認をそそのかされているのは動物以下の振舞いであり、ここでは許されるものではない。レズビアンやゲイを見つけたら、捕まえて警察に引き渡そう！"1995年9月に、ジンバブエ議会は同性愛行為を取り締まる法律を制定した。1997年に裁判所は初代ジンバブエ大統領であり前任者のカナーン・バナナを11件のソドミー行為と強制わいせつで有罪の判決を下した。公判ではムガベがバナナの指向を知っていたが止めることはしていなかったとの証言が出るなど、ムガベに不利な事実も明らかになった。しかしながら、バナナはジンバブエから逃亡したが結局1999年に戻り、同性愛行為の罪で1年間収監され、また彼の司祭職も剥奪された。
アメリカ合衆国におけるソドミー法は、アメリカ軍法の範囲を除くと連邦政府の司法管轄レベルから各州における対応差のレベルに移行している。裁判判決によって2002年時点で36州が全てのソドミー法を撤廃している。残る州のソドミー法については2003年のローレンス対テキサス州裁判にて合衆国最高裁が無効の判決を下している。アメリカ軍は、「市民社会と異なる固有の社会の必要性がある」として、統一軍事裁判法（en）の第125条でソドミーを禁じており、ローレンス判断の適用範囲外としている。陸軍控訴裁判所（en）はローレンス対テキサス州裁判の結果を受けて第125条を追加している。合衆国対スタイアウォルおよび合衆国対マーカムの両裁判にて「合衆国最高裁の判定は自由の名の下における自然に反する行為」と判断し、加えて第125条は「陸軍固有の要因」による「ローレンス判断の自由の保護範囲外」を守る役目があるとした 。ここでの要因の例は、親交、公衆における性行動や、命令や規律の適用を妨げるその他の要因などを指す。合衆国対メモと合衆国対ブロックの両事件は、陸軍裁判所がローレンス判決を覆して合意の上でのソドミー行為を有罪としている。
スウェーデンでは1944年に同性愛が合法となった。性的同意年齢は15歳とされ、1972年より異性間・同性間の年齢差はない。スウェーデンの犯罪法（SFS 1962:700）の第6章（性犯罪）は性的指向による区別がない。性行為に限定した法記述は公然わいせつ法（SUS 1762:779）の第17章に存在する。
シンガポール刑法（en）の第377A条（en）にて品位を乱す行為（outrage of decency）の禁止、金銭の授受、教唆、男性間の品位にかける淫らな行為（gross indecency）に対して最長2年の収監の罰則を規定している。同地で用いられていたヒンドゥー法典（en）では同性間の性行為を違法化していなかったが、英国植民地統治時代の1858年に第377条が追加された経緯がある。その後2007年10月に、第377条は第377A条に変更を行ったが、男性間の性行為に最長2年の収監罰則規定は維持された。
以下のC#の例では、RealClient はアカウント番号を格納する。正しいパスワードを知っているユーザーだけが、このアカウント番号にアクセスできる。RealClient はパスワードを知っている ProtectionProxy で守られている。ユーザーがアカウント番号を得たい場合、まずプロキシがユーザーに対して認証を求め、ユーザーが正しいパスワードを入力したときだけプロキシが RealClient を呼び出してアカウント番号をユーザーに通知する。この例では、正しいパスワードは thePassword である。using System;namespace ConsoleApplicationTest.FundamentalPatterns.ProtectionProxyPattern{    public interface IClient {        string GetAccountNo();    }     public class RealClient : IClient {        private string accountNo = "12345";        public RealClient() {            Console.WriteLine("RealClient: Initialized");        }        public string GetAccountNo() {            Console.WriteLine("RealClient's AccountNo: " + accountNo);            return accountNo;        }    }      public class ProtectionProxy : IClient    {        private string password;  //秘密のパスワード        RealClient client;         public ProtectionProxy(string pwd) {            Console.WriteLine("ProtectionProxy: Initialized");            password = pwd;            client = new RealClient();        }         // ユーザーを認証し、アカウント番号を返す        public String GetAccountNo() {            Console.Write("Password: ");            string tmpPwd = Console.ReadLine();             if (tmpPwd == password) {                return client.GetAccountNo();            } else {                Console.WriteLine("ProtectionProxy: Illegal password!");                return "";            }        }    }         class ProtectionProxyExample    {        [STAThread]        public static void Main(string[] args) {            IClient client = new ProtectionProxy("thePassword");            Console.WriteLine();            Console.WriteLine("main received: " + client.GetAccountNo());            Console.WriteLine("\nPress any key to continue . . .");            Console.Read();        }    }}