假设您的应用程序中发生了某些事情,例如抛出的异常。作为开发人员,我希望看到它,但我不希望典型的网站用户也看到它(它暴露了路径和东西)。
我注意到有些网站正在加密错误消息,用户会看到:
Oh shit something went wrong. Give this code to the site admin:
*&#BFO*&@BF#*&@BH#OGF*@B#(G*O&GBO*@#BG*@#BG*@BO#GO*@B#(GP
*O&QBOF*UB@#GOF*&B@#G*&OGB*@#O&BG*&@#BG(P*@#HNFIO@NW#FKLJ
*@UB#FO@#B*FB*OBF*O&BW#O*FBWO*G#B&*OGB*W#BGLKJWBGLKJBGLKJ
或类似的东西。 然后开发人员可以解密它并查看消息。
这是一个好主意还是坏主意?
有没有更好的方法?
答案 0 :(得分:1)
您可以为特定会话设置cookie并使用它来显示和隐藏错误,例如,检查用户是否已登录,如果已登录,他/她是否具有查看错误的权限。
答案 1 :(得分:1)
您的方法过于依赖用户。更好的说法 类似的东西:
发生错误,应用程序希望发送详细信息 到网站管理员。 [关于潜在用户数据暴露的信息]好吗? [是] [不]
您根本不需要向用户显示详细信息。
答案 2 :(得分:1)
加密错误消息通常是个好主意,因为它可能包含有关黑客可能利用的安全问题的信息。
另一方面,最终用户更有可能向网站管理员显示一条简短的错误消息(例如MySQL: Duplicate entry <whatever> for key <whatever>
,而不是他们不理解的一堆随机代码。
我通常会添加自动错误报告并编写类似&#34的内容;发生了错误。网站管理员已收到通知,并会尽快解决问题。如果问题仍然存在,请在此处将此代码发送给网站管理员(链接到错误报告表单)。&#34;。
错误消息以及$_SERVER
转储使用ASCII移位和<small>
标记进行编码,以减小大小和可怕性。