Prevenire lo反对联合国被垃圾邮件
Prevenire lo反对联合国被垃圾邮件
年青一代Chiunque inviare联合国反馈。传递机器人,垃圾信息散布者e altro重新。Potremmo aggiungere联合国po的di“验证码”艾尔形式每essere qualche modo protetti戴机器人,oppure possiamo usare API di terze合适的婚姻对象。
何鸿燊deciso di utilizzare servizio反垃圾邮件gratuitoAkismet联合国每dimostrare来表现chiamate广告被e来表现la chiamata“服务的班达”。
Akismet Iscrizione广告
创建联合国帐户gratuito苏akismet.come cosi ottenete la fornita dal servizio chiave API。
Aggiungere il componente HTTPClient di ob娱乐下载Symfony
Invece di usare una libreria格瓦拉astrae le Akismet API di faremo direttamente le chiamate API。票价da独奏曲le chiamate HTTP e稍efficiente (e让ci能di beneficiare di合奏gli strumenti di调试di Symfony,来l 'integrazione con ob娱乐下载il分析器)。
设计每il controllo di una架势之后,垃圾邮件
创建una nuova架势所以nella cartellasrc /
,chiamatelaSpamChecker
:la架势conterra la logica di chiamata阿莱API di Akismet e la logica每interpretarne le risposte:
Il metodo请求()
德尔端HTTP invia una richiesta POST Akismet 'URL di ($ this - >端点
)e di parametri passa联合国数组。
Il metodogetSpamScore ()
restituisce混乱关系possibili valori,格瓦拉dipendono dalla risposta真主安拉chiamata API:
2
:se il commento e uno”垃圾邮件palese”;1
:se il commento potrebbe essere垃圾邮件;0
e: se il commento e sicuro e非垃圾邮件(il cosiddetto“火腿”)。
提示
Usate l 'indirizzo specialeakismet-guaranteed-spam@example.com
每forzare il risultato德拉chiamata“垃圾邮件”。
Utilizzare le variabili d 'ambiente
洛杉矶的架势SpamChecker
如果波沙南parametroakismetKey美元
。来/ la cartella di caricamento possiamo iniettarlo tramite联合国'impostazione绑定
德尔容器:
1 2 3 4 5 6 7 8 9 10
- - - / config / services.yaml+ + + b / config / services.yaml@@ -12 6 + 12 7 @@服务:可以使用autoconfigure:真正的#自动注册你的服务作为命令,事件订阅者,等困境:字符串$ photoDir:“% kernel.project_dir % /公共/上传照片”+字符串$ akismetKey:“% env (AKISMET_KEY) %”#在src /可以使类作为服务#这将创建一个服务每个类的id是完全限定的类名
Akismet Sicuramente非vogliamo forzare il valore德拉chiave di di configurazione nel文件services.yaml
,每questo motivo usiamo una variabile d 'ambiente (AKISMET_KEY
)。
Spetta poi的ogni sviluppatore impostare una variabile d 'ambiente“reale”o memorizzare il valore联合国文件.env.local
:
每l 'ambiente di produzione si dovrebbe definire una variabile d 'ambiente“reale”。
马Funziona野猪,la gestione di molte variabili d 'ambiente potrebbe diventare complicata。在questo卡索,Symfonob娱乐下载y offre联合国'alternativa“米利quando si tratta di conservare stringhe segrete。
Salvare stringhe segrete
年青一代Invece di usare molte variabili d 'ambieob娱乐下载nte, Symfony gestire联合国portachiavi鸽子e相信memorizzare stringhe segrete。Una caratteristica chiave e la possibilita di effettuare il提交del portachiavi nel库(每aprirlo马无la chiave)。联合国'altra grande caratteristica e格瓦拉possiamo gestire联合国portachiavi每ciascun环境。
索诺勒stringhe segrete variabili d 'ambiente camuffate。
Akismet Aggiungete la chiave API al portachiavi:
1
美元ob娱乐下载symfony控制台的秘密:集AKISMET_KEY
1 2 3 4
请输入秘密值:>[好]秘密“AKISMET_KEY”加密“/ dev / config /秘密”;你可以提交它。
Poiche e la prima volta格瓦拉eseguiamo questo第一,由于chiavi所以nella cartella园子状态生成/ dev / config /秘密
。Il第一ha poi memorizzato la stringa segretaAKISMET_KEY
,所以nella stessa cartella。
每le stringhe segrete usate内尔'ambiente di sviluppo年青一代si decidere di票价il提交del portachiavi e delle chiavi生成所以nella cartella/ dev / config /秘密
。
Le stringhe segrete possono传递essere sovrascritte, impostando una variabile d 'ambiente con lo stesso省。
Controllo垃圾报称nei commenti
联合国每controllare se modo单纯的联合国commento appena ricevuto新航da marcare来垃圾consiste nel richiamare la架势SpamChecker, prima di memorizzare我达缇女士nel数据库:
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 37
- - - / src /控制器/ ConferenceController.php+ + + b / src /控制器/ ConferenceController.php@@ 7,6 + 7,7 @@使用App \实体\会议;使用App \ \ CommentFormType形式;使用App \ Repository \ CommentRepository;使用App \ Repository \ ConferenceRepository;+使用App \ SpamChecker;使用原则\ ORM \ EntityManagerInterface;控制器使ob娱乐下载用Symfony \包\ FrameworkBundle \ \ AbstractController;组件使用ob娱乐下载Symfony \ \ HttpFoundation \文件\ \ FileException异常;@@ -35 7 + 36 7 @@类ConferenceController延伸AbstractController} #(路线(“/会议/{蛞蝓}”,名字:“会议”))公共函数显示(请求美元请求、会议会议上,美元CommentRepository CommentRepository美元,字符串photoDir美元):反应+公共函数显示(请求美元请求、会议会议上,美元CommentRepository CommentRepository美元,SpamChecker SpamChecker美元,字符串photoDir美元):反应{$评论=新的评论();$ = $ this - > createForm形式(CommentFormType::类,评论美元);@@ -53、6 + 54 17 @@类ConferenceController延伸AbstractController} $ this - > entityManager - >保存($评论);++ $上下文= (+“user_ip”= > $请求- > getClientIp (),+“user_agent”= >请求- >标题- >获取美元(“用户代理”),+“推荐人”= >请求- >标题- >获取美元(“推荐人”),+“永久链接”= > $请求- > getUri (),+);+如果(2 = = = $ spamChecker - > getSpamScore(评论,上下文美元)){+把新\ RuntimeException(“明目张胆的垃圾邮件,走开!”);+}+$ this - > entityManager - >冲洗();返回$ this - > redirectToRoute(“会议”,(“鼻涕虫”= > $会议- > getSlug ()));
Controlliamo格瓦拉funzioni祈祷。
Gestire stringhe segrete produzione
每la produzione平台。sh supporta l 'impostazione divariabili d 'ambiente sensibili:
1
美元ob娱乐下载syob直播appmfony云:变量:创建——敏感= 1级=项目- y - name = env: =六边形abcdef AKISMET_KEY——值
妈,来abbiamo gia visto, usare stringhe segrete di Symfony pob娱乐下载otrebbe essere la scelta米利。非在目的地di sicurezza,马在目的地di gestione一些购nel团队。Tutte le stringhe segrete园子memorizzate nel库e l 'unica variabile d 'ambiente da gestire / la la chiave produzione e di decrittazione。Questo仁德相信一个ciascun membro del团队l 'aggiunta di stringhe segrete,传递se非ha accesso di produzione ai服务器。Tuttavia il设置risultera联合国po的稍complesso。
在primo luogo generare una coppia di chiavi / l 'uso produzione:
1
美元ob娱乐下载symfony控制台的秘密:生成密钥——env =刺激
在Linux和类似操作系统,使用
APP_RUNTIME_ENV =刺激
而不是——env =刺激
这避免了编译的应用程序刺激
环境:1
美元APP_RUNTIME_ENV = proob娱乐下载d symfony控制台的秘密:生成密钥
Akismet Aggiungere nuovamente la stringa segreta di nel portachiavi di produzione马con il锁valore di produzione:
1
美元ob娱乐下载symfony控制台的秘密:集AKISMET_KEY - env =刺激
L 'ultimo航道e di quello inviare la chiave di decrittazione一个平台。sh impostando una variabile:
1
美元ob娱乐下载syob直播appmfony云:变量:创建——敏感= 1级=项目- y - name = env: SYMFONY_DECRYPTION_SECRET——价值= ' php - r“回声base64_encode(包括(“配置/机密/刺激/ prod.decrypt.private.php”));””
Si possono aggiungere合唱我文件一个git在区域di阶段,ed eseguire il提交。La chiave di decrittazione e占据aggiunta automaticamente al文件.gitignore
在modo格瓦拉新航esclusa da qualsiasi提交。每个马焦雷sicurezza e相信rimuoverla dalla macchina语境,essendo占据inclusa nel部署:
1
美元rm - f配置/机密/刺激/ prod.decrypt.private.php