小编Bar*_*man的帖子

如何防止用户从本地保存的Html登录页面访问Web应用程序?

我有一个很多非技术用户使用的Web应用程序.我发现其中一些用户正在将应用程序的登录页面保存到他们的桌面(这也保存了相关的CSS和JS文件).然后,要开始使用该应用程序,他们双击该桌面图标,该图标使用file:// protocol显示本地副本.

这可能会导致以后出现问题,例如,如果我更改登录表单或发布的URL等,此外,某些javascript实用程序(例如PIE.htc)无法使用file://协议.

显然他们应该做的是保存浏览器书签/收藏夹,我正在寻找一种方法来检测和警告这些用户,而不会混淆其他用户.我一直在使用一些JavaScript来警告这些用户:

if (top.location.protocol == 'file:') {
    alert('This application is not designed to be accessed from a desktop copy...')
}
Run Code Online (Sandbox Code Playgroud)

但是这只会警告已经保存桌面副本的用户,因为我添加了这段javascript.

有没有其他人有这个问题,并提出他们想分享的聪明的解决方案?

谢谢

更新:

最后,我决定通过在登录页面请求时设置带有nonce值的cookie,并在表单中存储与隐藏字段相同的值.然后,在表单提交处理程序中,检查两者是否相同,如果没有则显示错误消息.可以将nonce存储在会话中而不是cookie中,但我不想创建不必要的会话.

如果用户已在本地保存了登录页面,则与cookie相比,它们在保存的表单中可能具有不同的nonce值(如果他们根本没有cookie).

通常情况下,人们不会在登录表单中添加CSRF保护(这就是这个),但它符合我的要求.我在The Register上了解了这项技术,http://www.theregister.co.uk/2009/10/02/google_web_attack_protection/,Google对其登录表单实施了类似的保护,以防止伪造登录请求,http:/ /en.wikipedia.org/wiki/Cross-site_request_forgery#Forging_login_requests.

html javascript desktop web-applications

9
推荐指数
1
解决办法
1254
查看次数

如何自动将注释从方法移动到字段?

我有大量 Java 类使用 JPA 属性访问而不是字段访问,将它们转换为使用字段访问(将注释从 getter 移动到字段)非常耗时。从数据库表重新生成它们也不是一种选择。

所以我正在考虑使用 IDEA 的结构搜索和替换来尝试自动移动注释。我想改变一个看起来像这样的类:

@Entity
@Table
public class Make {

    private Long id;
    private String makeCode;
    ...other properties, with more involved JPA annotations

    @Id
    @GeneratedValue
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Column(length = 10, unique = true)
    public String getMakeCode() {
        return makeCode;
    }

    public void setMakeCode(String makeCode) {
        this.makeCode = makeCode;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

一个看起来像这样的:

@Entity
@Table
public class Make {

    @Id
    @GeneratedValue …
Run Code Online (Sandbox Code Playgroud)

java intellij-idea structural-search

6
推荐指数
1
解决办法
345
查看次数