用户登录到HTML表单.使用JavaScript,他们的密码在本地进行哈希处理(也是盐渍的).服务器知道密码+盐应该是什么,用户已经注册,blahblahblah.现在用户请求页面.服务器向用户发送随机ID.当用户加载下一页时,该随机ID将附加到它们本地存储的密钥,它被散列,然后发送到服务器.服务器知道它们的密钥是什么,随机ID,执行相同的散列,并进行比较.如果他们匹配,恭喜,它来自正确的计算机.如果没有,那么有人一直在嗅探您的TCP/IP流量.
所有这一切显然没有 SSL,否则这将是非常多余的.
我的问题 - 我如何在客户端PC上存储密钥?
你好;
我正在开发一个PHP内容管理系统,并提出了一个安全的登录系统.唯一的问题是它需要某种形式的客户端存储(对于一个非常小的密钥,长度为40个字符) - 否则用户必须在每个页面加载时输入他们的密码.
有没有办法,使用PHP或JavaScript,我可以在客户端的PC上存储一个小的40个字符的字符串,以后再检索它?
编辑:COOKIES不是一个选项.这个40个字符的字符串不能离开客户端的计算机,所有设置的cookie都随每个HTTP标头一起发送.
我重复 - COOKIES是不安全的,而不是一个可行的选择.
让我像这样重做 - 客户端提交一个HTTP表单.使用某种脚本语言(例如JavaScript),密码将从表单中删除,不会发送到服务器,加密,并保留CLIENT-SIDE,我可以检索和验证(通过使用从中发送给用户的密钥对其进行哈希处理)服务器).此验证将发送到服务器,而不是密钥.
javascript php security persistent content-management-system
有时我需要实例化CoreDateEntity来存储一些临时使用的信息.但我不需要将它存储到DB中.
目前我创建了一个类似于CoreDateEntity具有相同结构的类.它运作良好但我必须在两个模型之间进行许多数据传输.
有没有更好的方法来处理这个?
感谢所有的答复.但你们只是给我一半答案.考虑一下,我需要将一些没有MOC的实体放到当前的数据库池中,我怎么能这样做?我已经检查了CoreData的文档,似乎我没有找到API将一个实体从MOC转移到另一个MOC(管理对象上下文).
这是代码,我试着让类型推断找出函数的类型.代码编译时,它在运行时失败.
Ambiguous type variables `b0', `m0' in the constraint:
(PersistBackend b0 m0) arising from a use of `isFree'
Probable fix: add a type signature that fixes these type variable(s)
In the expression: isFree testDay
In an equation for `it': it = isFree testDay
Run Code Online (Sandbox Code Playgroud)
:t isFree
isFree :: PersistBackend b m => C.Day -> b m Bool
>isFree day = do
match <- selectList [TestStartDate ==. day,
TestStatus !=. Passed,
TestStatus !=. Failed] []
if (L.null match) then (liftIO $ return …Run Code Online (Sandbox Code Playgroud) (java1.6,hibernate,mySql)
我正在尝试持久化包含字符串列表的java类.问题是,当我获取它时,我得到一个PersistentBag而不是List或PersistentList.我寻找答案或例子,但我只是更困惑.
我有一个小测试用例,我使用:
@Test
public void testFind() {
FooEntity expected = createFoo();
FooEntity actual = dao.find(expected.getId());
assertEquals(expected, actual);
assertEquals(actual, expected);
}
Run Code Online (Sandbox Code Playgroud)
问题可以看作第一个assertEquals工作,而第二个
(assertEquals(actual,expected);)失败.它发生,因为List被检索为PersistentBag.
所以,你知道这里有什么不对吗?你可以帮我吗?
这是我的代码:
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "EXAMPLE4_FOO")
public class FooEntity {
@Id
@GeneratedValue
@Column(name = "ID")
private int id;
@Column(name = "LIST")
@ElementCollection(fetch = FetchType.EAGER)
private List<String> strings = new ArrayList<String>();
public FooEntity() {
}
public int getId() {
return …Run Code Online (Sandbox Code Playgroud) 如何进行持久通知,每次用户看到它时都会更新?形成服务
我正在学习 JMS 并遇到了这个声明:http : //docs.oracle.com/javaee/1.3/jms/tutorial/1_3_1-fcs/doc/advanced.html#1023387
PERSISTENT 传递模式是默认设置,它指示 JMS 提供者格外小心,以确保在 JMS 提供者发生故障时消息不会在传输过程中丢失。使用此传递模式发送的消息在发送时会记录到稳定存储中。
如果发生 JMS Provider 故障,那么 JMS Provider 如何确保消息不丢失?
这是什么意思:
“使用这种传递模式发送的消息在发送时会记录到稳定存储中。”
请帮助我在这里理解 JMS 概念。
我正在学习Clojure,并在此过程中从O'Reilly的书"Clojure Programming"中看到了这个例子:
(let [tm (transient {})]
(doseq [x (range 100)]
(assoc! tm x 0))
(persistent! tm))
Run Code Online (Sandbox Code Playgroud)
它给出了结果{0 0, 1 0, 2 0, 3 0, 4 0, 5 0, 6 0, 7 0}.
也:
(let [tm (transient {})]
(assoc! tm 0 0)
(assoc! tm 1 0)
(assoc! tm 2 0)
(assoc! tm 3 0)
(assoc! tm 4 0)
(assoc! tm 5 0)
(assoc! tm 6 0)
(assoc! tm 7 0)
(assoc! tm 8 0)
(persistent! tm)
)
Run Code Online (Sandbox Code Playgroud)
给出相同的结果:{0 …
在Persistent中,如何将XyzId(PersonId,whateverid)转换为其表示的整数?
有什么方法可以与MongoDB建立持久连接,而不是创建MongoClient实例并在构造查询时使用它?我注意到它在每个查询操作上打开/关闭连接.
我正在使用Python,并安装了pymongo.我环顾四周,没有找到很多关于连接管理的信息.有鉴于此,关于数据库管理的一般建议是什么?
我试图弄清楚case在将记录插入数据库时是否有办法避免大量语句.
我目前的代码类似于:
mt1 <- runDb $ do
muid <- insertUnique user
case muid of
Just uid -> do
let t1 = Table1 {..., user = uid}
maid <- insertUnique t1
case maid of
Just aid -> do
mo <- getBy $ UniqueField "somevalue"
case mo of
Just (Entity oid o) -> do
mcid <- insertUnique Table2 {..., oid = oid}
case mcid of
Just cid -> do
mfid <- insertUnique Table3 {..., cid = cid}
case mfid of …Run Code Online (Sandbox Code Playgroud) 我在用户和学生之间的 Symfony 中有一个 OneToOne 关系,其中用户是所有者,当我尝试坚持更改时,双方都没有进行更改,这是我的最后一个配置:
<?php
/**
* User
*
* @ORM\Table(name="user")
* @ORM\Entity(repositoryClass="BackendBundle\Repository\UserRepository")
*/
class User implements UserInterface, \Serializable
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToOne(targetEntity="Student", mappedBy="user")
*/
private $student;
public function __construct() {
}
/**
* Set student
*
* @param \BackendBundle\Entity\Student $student
*
* @return User
*/
public function setStudent(\BackendBundle\Entity\Student $student)
{
$this->student = $student;
return $this;
}
/**
* Get student
*
* @return …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 cookie 来记住访问者是否已经在我的网站上看过特定的教程页面。该站点是使用 Flask 构建的。
教程页面是从烧瓶路由加载的,所以我认为尝试使用烧瓶框架中的 make_response 和 response.set_cookie 函数更改烧瓶路由定义中的 cookie 是有意义的。
但是,此(会话)cookie 仅在会话期间有效。我找不到有关使用烧瓶设置永久/持久 cookie 的任何信息。我怎么能用烧瓶做到这一点?
谢谢!
persistent ×13
haskell ×3
yesod ×2
android ×1
bag ×1
clojure ×1
connection ×1
cookies ×1
core-data ×1
doctrine ×1
flask ×1
hibernate ×1
iphone ×1
javascript ×1
jms ×1
list ×1
matlab ×1
monads ×1
mongodb ×1
objective-c ×1
one-to-one ×1
php ×1
python ×1
security ×1
semantics ×1
service ×1
symfony ×1
transient ×1
types ×1
variables ×1