我们订阅了许多在线数据库/报纸/等。学生可以用于研究。但是,目前的系统非常繁琐。用户必须:
每个人都使用相同的凭据,但每个数据库都有自己的用户名/密码。
我要做的是创建一个删除了第4步的系统。也就是说,学生使用他们的学校证书登录并点击数据库链接。然后他们自动签署到数据库中。
那么......我将如何实施呢?
我的第一个想法是创建一个全窗口iframe。 iframe显示数据库,但实际页面托管在学校服务器上。然后实际页面输入凭据并通过javascript提交表单。
但这是不可能的(b / c XSS)?我应该模拟对数据库的POST请求,然后返回给用户吗?或者有更好的方法吗?
感谢。
答案 0 :(得分:0)
查看SAML(http://en.wikipedia.org/wiki/Security_Assertion_Markup_Language),这似乎是针对您的用例(只要数据库托管公司也可以在他们一边实施)。
更新:如果SAML不起作用,我猜你需要从用户的浏览器创建一个POST请求到已经包含登录详细信息的数据库登录页面。如果数据库登录机制需要用户名和密码作为参数(很可能),这不是一个非常安全的过程,因为密码将在用户的源代码中可读。
答案 1 :(得分:0)
我只是想用我的解决方案更新这个问题 -
虽然由于XSS的限制,我想做的事情(将数据输入表格并自动提交)是不可能的,但我确实提出了类似的想法。
我最终做的是将登录表单重复到我们的本地服务器上,但更改action
属性。
所以我从数据库的登录页面复制了这个:
<form action="login.php" method="post">
<input id="username" name="username" type="text">
<input id="password" name="password" type="password">
<input type="submit" value="Login" class="submit-button">
</form>
并将其更改为:
<form action="http://database.example.com/Authentication/LogOn" method="post">
<input id="username" name="username" type="hidden" value="OUR_USERNAME">
<input id="password" name="password" type="hidden" value="OUR_PASSWORD">
<input type="submit" value="Auto Login" class="submit-button">
</form>
(这只是一个测试;在实际服务上,javascript会在页面加载时自动提交表单;表单为hidden
,因此用户看不到任何内容。)。
所以现在,不是将表单提交到本地页面,而是将其提交到远程页面......我从来不知道你能做到这一点,但它就像一个魅力。我还没有遇到任何问题[在Chrome和&amp; Firefox],但可能能够在某些浏览器中引起问题。