在实际站点上处理错误消息的最佳方法

时间:2014-06-28 16:21:40

标签: php exception-handling error-handling runtime-error

假设您的应用程序中发生了某些事情,例如抛出的异常。作为开发人员,我希望看到它,但我不希望典型的网站用户也看到它(它暴露了路径和东西)。

我注意到有些网站正在加密错误消息,用户会看到:

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

或类似的东西。 然后开发人员可以解密它并查看消息。

这是一个好主意还是坏主意?

有没有更好的方法?

3 个答案:

答案 0 :(得分:1)

您可以为特定会话设置cookie并使用它来显示和隐藏错误,例如,检查用户是否已登录,如果已登录,他/她是否具有查看错误的权限。

答案 1 :(得分:1)

您的方法过于依赖用户。更好的说法 类似的东西:

  

发生错误,应用程序希望发送详细信息     到网站管理员。 [关于潜在用户数据暴露的信息]好吗?     [是] [不]

您根本不需要向用户显示详细信息。

答案 2 :(得分:1)

加密错误消息通常是个好主意,因为它可能包含有关黑客可能利用的安全问题的信息。

另一方面,最终用户更有可能向网站管理员显示一条简短的错误消息(例如MySQL: Duplicate entry <whatever> for key <whatever>,而不是他们不理解的一堆随机代码。

我通常会添加自动错误报告并编写类似&#34的内容;发生了错误。网站管理员已收到通知,并会尽快解决问题。如果问题仍然存在,请在此处将此代码发送给网站管理员(链接到错误报告表单)。&#34;。

错误消息以及$_SERVER转储使用ASCII移位和<small>标记进行编码,以减小大小和可怕性。