垃圾邮件voorkomen middels即使API
垃圾邮件voorkomen middels即使API
Iedereen菅直人反馈算法。书脚本zoals垃圾邮件机器人。我们zouden甚至“验证码”kunnen河畔toevoegen het formulier waardoor het甚至齐克水平van bescherming krijgt特根说soort脚本。我们kunnen gebruik这个范甚至aantal走读生的API。
本土知识来besloten om de免费Akismet服务te gebruiken om te变迟虽然锄我即使API kunt aanroepen锄我德所说的“乐队”kunt这个词。
Akismet Aanmelden bij
op河畔融合我voor甚至免费帐户akismet.comAkismet en ontvang de API键。
Gebruik van het Symfonob娱乐下载y HTTPClient-component这个词
在plaats van甚至specifieke图书馆te gebruiken voor Akismet de API, zullen我们阿莱直接uitvoeren API调用。Het zelf uitvoeren van de http调用计算(en stelt ons在国家om te profiteren范阿莱Symfony调试工具,zoals de integratie遇ob娱乐下载到de Symfony分析器)。
即使spam-checker-class bouwen
cre甚至nieuwe类出席src /
地图遇到德拿安SpamChecker
。Akismet Hierin zullen我们de logica schrijven om德河畔API te roepen en de antwoorden te verwerken:
德请求()
方法van de HTTP客户机verstuurt甚至POST请求naar de Akismet URL ($ this - >端点
长梅伊)在geeft海尔甚至散发出参数。
德getSpamScore ()
方法geeft afhankelijk van de API-response甚至van deze 3 waarden terug:
2
:als德中“overduidelijk垃圾邮件”活化;1
:als de中“mogelijk垃圾邮件”菅直人zijn活化;0
:als de中“geen垃圾邮件”(火腿)活化。
提示
Gebruik het specialeakismet-guaranteed-spam@example.com
e-mailadres om het resultaat van甚至叫als te forceren垃圾邮件。
Omgevingsvariabelen gebruiken
德SpamChecker
类是afhankelijk范甚至akismetKey美元
论点。净als bij de上传目录,kunnen我们deze injecteren通过甚至自动装配
annotatie:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
- - - / src / SpamChecker.php+ + + b / src / SpamChecker.php@@ 3、6 + 3、7 @@名称空间的应用程序;使用App \实体\评论;+使用Syob娱乐下载mfony \ DependencyInjection \属性\ \组件自动装配;使用Syob娱乐下载mfony \ \ HttpClient \ HttpClientInterface合同;类SpamChecker @@ -11 7 + 12 7 @@类SpamChecker公共函数__construct(私人HttpClientInterface美元客户,——字符串akismetKey美元,+ #[自动装配(% env (AKISMET_KEY) %)]字符串akismetKey美元,){$ this - >端点= sprintf (https://%s.rest.akismet.com/1.1/comment-check, akismetKey美元);}
我们willen de waarde van de Akismet关键不行硬编码在代码。我们在plaats daarvan gebruiken omgevingsvariabele (AKISMET_KEY
)。
Het河畔是丹德individuele ontwikkelaar om甚至“echte”omgevingsvariabele te stellen de waarde op te slaan甚至.env.local
bestand:
Voor多彩的酩悦甚至“echte”环境变量gedefinieerd沃顿。
Dat werkt去,低平火山口het beheer van veel环境变量菅直人omslachtig沃顿。ob娱乐下载Symfony heeft甚至“打赌”alternatief als het gaat om het bewaren范的秘密。
秘密bewaren
在plaats van veel omgevingsvariabelen te gebruiken,菅直人甚至Syob娱乐下载mfony库菅直人opslaan beheren waar我秘密。即使hiervan belangrijke特性是德河畔mogelijkheid om德库德库脚趾te voegen(低平火山口探测器de decryptiesleutel om de inhoud te lezen)。即使安德利果汁有趣的特性是dat我甚至每omgeving菅直人beheren金库。
秘密zijn verkapte环境变量。
Akismet Voeg de关键脚趾长德库:
1
美元ob娱乐下载symfony控制台的秘密:集AKISMET_KEY
1 2 3 4
请输入秘密值:>[好]秘密“AKISMET_KEY”加密“/ dev / config /秘密”;你可以提交它。
Omdat说de eerste科尔dat我们het突击队uitvoeren zijn er在de矫饰的钥匙/ dev / config /秘密
gegenereerd地图。德AKISMET_KEY
秘密werd vervolgens opgeslagen diezelfde地图。
Voor development-secrets菅直人我呃Voor kiezen om de sleutels死在德德库/ dev / config /秘密
目录zijn gegenereerd te committen。
秘密kunnen显得沃顿overschreven门即使环境变量满足dezelfde te stellen拿安。
Reacties controleren op垃圾邮件
即使eenvoudige许多om nieuwe reacties te controleren op垃圾邮件,垃圾邮件是检查aanroepen voordat de gegevens de数据库中沃顿opgeslagen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33 34 35 36
- - - / src /控制器/ ConferenceController.php+ + + b / src /控制器/ ConferenceController.php@@ 7,6 + 7,7 @@使用App \实体\会议;使用App \ \ CommentType形式;使用App \ Repository \ CommentRepository;使用App \ Repository \ ConferenceRepository;+使用App \ SpamChecker;使用原则\ ORM \ EntityManagerInterface;控制器使ob娱乐下载用Symfony \包\ FrameworkBundle \ \ AbstractController;使用Syob娱乐下载mfony \ DependencyInjection \属性\ \组件自动装配;@@ -35 6 + 36 7 @@类ConferenceController延伸AbstractController请求请求美元,美元会议,会议CommentRepository CommentRepository美元,+ SpamChecker SpamChecker美元,#【自动装配(% photo_dir %)]字符串photoDir美元,反应):{$评论=新的评论();@@ -53年6 + 55岁,17 @@类ConferenceController延伸AbstractController} $ this - > entityManager - >保存($评论);++ $上下文= (+“user_ip”= > $请求- > getClientIp (),+“user_agent”= >请求- >标题- >获取美元(“用户代理”),+“推荐人”= >请求- >标题- >获取美元(“推荐人”),+“永久链接”= > $请求- > getUri (),+);+如果(2 = = = $ spamChecker - > getSpamScore(评论,上下文美元)){+把新\ RuntimeException(“明目张胆的垃圾邮件,走开!”);+}+$ this - > entityManager - >冲洗();返回$ this - > redirectToRoute(“会议”,(“鼻涕虫”= > $会议- > getSlug ()));
的Controleer het去werkt。
秘密beheren在生产
在综合国力ondersteunt平台。sh het instellen范敏感的环境变量:
1
美元ob娱乐下载syob直播appmfony云:变量:创建——敏感= 1级=项目- y - name = env: =六边形abcdef AKISMET_KEY——值
Zoals hierboven besproken是het gebruik van Symob娱乐下载fony秘密mogelijk打赌。不行voor de veiligheid低平火山口om het beheer van秘密eenvoudiger te voor het projectteam这个词。阿莱秘密沃顿opgeslagen在德库en de enige omgevingsvariabele死我酩悦beheren voor de productieomgeving de decryptiesleutel。Dat maakt het voor iedereen het团队mogelijk om productie-secrets脚趾te voegen, zelfs als泽geen toegang hebben合计productieservers。De设置逢专业复杂。
在综合国力Genereer eerst即使密钥对voor gebruik:
1
美元ob娱乐下载symfony控制台的秘密:生成密钥——env =刺激
在Linux和类似操作系统,使用
APP_RUNTIME_ENV =刺激
而不是——env =刺激
这避免了编译的应用程序刺激
环境:1
美元APP_RUNTIME_ENV = proob娱乐下载d symfony控制台的秘密:生成密钥
Akismet Voeg het秘密opnieuw脚趾在生产库,低平火山口怒遇到de多彩的waarde:
1
美元ob娱乐下载symfony控制台的秘密:集AKISMET_KEY - env =刺激
Als laatste堵塞configureren我们de decryptiesleutel op平台。sh门het instellen van甚至敏感的变量:
1
美元ob娱乐下载syob直播appmfony云:变量:创建——敏感= 1级=项目- y - name = env: SYMFONY_DECRYPTION_SECRET——价值= ' php - r“回声base64_encode(包括(“配置/机密/刺激/ prod.decrypt.private.php”));””
我看阿莱bestanden toevoegen en committen;de decryptionkey werd automatisch河畔.gitignore
toegevoegd, du deze zal nooit gecommit沃顿。Voor米尔veiligheid菅直人我deze范我lokale机器verwijderen omdat deze al gedeployd是:
1
美元rm - f配置/机密/刺激/ prod.decrypt.private.php