若于汝之网域行安全之检,而其报以满壁之警,则人或惊惶,或竟漠视之。二者皆非良策。此中多数,实易解也——其难处,乃在识何者实为要害,及其由也。
Strict-Transport-Security者,吾首当加之。此令浏览器唯以HTTPS之途,与尔之站相接,纵有人误书http://,或循旧链,亦然。无此,则于公共WiFi,有攻之法,可于尔站转向HTTPS之前,截取其初之未加密之请。一标头,五分钟而加,永毋复思之。
于nginx:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
X-Content-Type-Options: nosniff者,众人所当具也。浏览器或尝臆测所供之文件为何类,此谓MIME嗅探,若网域容文件上传,则可乘此弊。设此首部,则令浏览器但信服务器所言文件为何。此仅一言,若纵用户上传物,则无此之患益甚。
X-Frame-Options可防汝页被嵌入他域之iframe。此攻防者,乃点击劫持——汝之登录页,隐匿于他人之站内,覆以假UI,诱用户误点。最安之设为DENY。若需允特定源,当用较新之frame-ancestors指令于内容安全策略,此可予汝更多控权。
引荐政策者,众皆略之,以为无足轻重。当用户自吾之域点击一链至他域时,浏览器必送引荐首部,载其来处之全URL。若URL中含隐秘之物——用户ID,会话令牌,内域路径——则此等皆泄于用户所至之诸外域。strict-origin-when-cross-origin者,为明智之默认设置,于跨域请求中,仅送源,而弃路径。
内容安全策略,既强大亦烦人。使汝得以明定何种脚本、样式、图像及他项资源,得于页上载入。若处置得当,纵使攻击者得注入内容,亦能止 XSS 攻击——彼辈仍不能运行任意脚本,盖因彼等脚本非在汝之允许清单也。
所难者,若用第三方脚本(如分析器、聊天插件、字库、诸般工具),须明示许可,初时颇费周章。欲不损及己站,当以报备模式为始:
Content-Security-Policy-Report-Only: default-src 'self'; ...
此录违规而不阻。汝可见其将破,调其策,而后自信,方行其令。
HTTP之头,非唯也,与电子邮件相关之DNS记录,亦同等重要,然常为众人所忽略。SPF与DMARC二者合力,掌管他处之邮件服务器是否接纳自称源自汝域之邮件。无此二者,任何人皆可发送冒充汝之钓鱼邮件,无论汝之银行、汝之客户,皆可。其解法,乃增数DNS记录而已——汝之邮件服务商(Google Workspace、Postmark、无论何者)将赐汝确值以增之。
添置标题自需半日之功。若第三方依赖繁多,则内容安全策略之施行更需时日,然可先发其余,另辟专务以治之。
欲知君之网站今之位次,吾尝构SecURL,专为此用——但将网址粘贴,即得评级之报,诸事依优先序列之。免费,无需账户。












