我正在制作一个我希望尽可能安全的登录脚本.问题是,安全似乎是一场永无止境的战斗.基本上,我正在寻找我的想法的建议和改进.
我所拥有的是仅基于会话的登录.无论何时会话信息发生变化,session_regenerate_id()都会调用以避免明显的劫持尝试.
如果未设置会话,我会检查cookie以进行有效登录,并且在成功时,我会更新会话.
我尝试通过添加哈希值以及一段唯一的用户信息(如用户名或ID)来保护cookie.这个哈希由各种信息组成,包括用户名/ id,无法解密的密码哈希,IP地址的一部分等.通过从cookie中提取用户名/ id,我可以从有效的用户信息中创建一个新的哈希并比较使用cookie中的哈希值.我希望这里是防止假cookie和cookie劫持(除非他们也欺骗IP地址).
编辑假设登录本身将通过HTTPS/SSL完成,因此转移(合理)安全.
我是在正确的轨道上吗?还有什么可以保证我的登录?
谢谢您的帮助!
通常,有三种方法(我知道)从<a/>标签执行javascript :
1)使用onclick():
<a href="#" onclick="alert('hello'); return false">hello</a>
Run Code Online (Sandbox Code Playgroud)
2)直接链接:
<a href="javascript:alert('hello')">hello</a>
Run Code Online (Sandbox Code Playgroud)
3)或外部附加:
// In an onload event or similar
document.getElementById('hello').onclick = window.alert('Hello');
return false;
<a id="hello" href="#">hello</a>
Run Code Online (Sandbox Code Playgroud)
我实际上是通过AJAX加载链接,所以#3基本上都没有了.那么,#1或#2或完全不同的东西更好吗?还有,为什么?我应该注意哪些陷阱?
另外值得注意的是,锚点确实没有链接到任何地方,因此href="#",我正在使用,a因此样式符合,因为这仍然是一个要点击的对象,并且按钮在上下文中是不合适的.
谢谢
我在HTML文档中有几个小图像,我想要便携,例如在发送电子邮件时仍然有用.我使用以下,效果很好:
<img src="data:image/png;base64,..."/>
Run Code Online (Sandbox Code Playgroud)
问题是,我想在文档中多次使用相同的图像,但不想重复整个base64数据字符串.我在电子邮件中看到过,数据一次编码,但引用了很多.这可能与HTML有关吗?
我听过并阅读了一些关于推迟JavaScript加载的文章,我非常感兴趣.对于在可以加载和执行的JavaScript数量有限的移动平台上可能有用的Web应用程序来说,这似乎是非常有前景的.
不幸的是,大多数文章都以极高的水平谈论这个问题.怎么会接近这个?
编辑
通常,所有JavaScript都是在页面加载时加载的,但是,在某个操作发生之前可能存在不需要的函数,此时应该加载JavaScript.这有助于减轻浏览器在页面加载时的负担.
具体来说,我有一个非常大量使用JavaScript的页面.当我在手机上加载页面时,它将无法正确加载.当我调试页面时,我删除了一些JS函数.一旦消除了足够的东西,该页面突然起作用.
我希望能够根据需要加载JS.甚至可能消除了仅用于启动的功能.
我有一个非常简单的boost :: asio套接字发送多播消息的包装器:
// header
class MulticastSender
{
public:
/// Constructor
/// @param ip - The multicast address to broadcast on
/// @param port - The multicast port to broadcast on
MulticastSender(const String& ip, const UInt16 port);
/// Sends a multicast message
/// @param msg - The message to send
/// @param size - The size of the message (in bytes)
/// @return number of bytes sent
size_t send(const void* msg, const size_t size);
private:
boost::asio::io_service m_service;
boost::asio::ip::udp::endpoint m_endpoint;
boost::asio::ip::udp::socket …Run Code Online (Sandbox Code Playgroud) 假设我有一个数字,我可以找到构成该数字的所有主要因素.例如,6000是2 ^ 4*3*5 ^ 3.
如果我有一个不能很好地分解的数字(给出一个可接受的素数列表),我怎样才能找到下一个最接近的数字?例如,给定数字5917,与素数列表2,3,5,7相关的最接近数字是多少?在这个例子中,这是6000.
我有一些蛮力找到答案的东西,但必须有一个更优雅的解决方案.
const UInt32 num = 5917;
const CVector<UInt32> primes = { 2, 3, 5, 7 };
const size_t size = primes.size();
UInt32 x = num;
while (x < num * 2)
{
const UInt32 y = x;
for(size_t i = 0; i < size && x > 1; ++i)
{
while(x % primes[i] == 0)
{
x /= primes[i];
}
}
if (x == 1)
{
cout << "Found " << y << endl; …Run Code Online (Sandbox Code Playgroud) 我有一个记录信息的系统,有时会发现一个特殊的IP地址做一些令人讨厌的事情,比如试图利用phpMyAdmin(即使它甚至没有安装在系统上).
当我找到这些违规者时,我将IP地址添加到阻止列表中,无论页面是否存在,都会返回一条小消息并记录IP地址及其查询字符串,以便我可以密切关注它们.
问题是,它们中的大多数似乎是扫描的脚本,而我在技术上仍然使用小消息返回200状态代码.我希望更多地使用状态代码,但我不确定哪一个最适用.
我在这里找到了这个列表,似乎401或403最适用.哪个是"禁止"IP地址的最佳代码?
我在Linux机器上有一个服务器/客户端应用程序.如果客户端尝试发送请求时服务器未启动,则会收到SIGPIPE并终止应用程序.
在尝试编写之前,如何检查套接字上的服务器是否可用?
另外值得注意的是,我不想捕获SIGPIPE,因为客户端实际上是许多应用程序使用的共享对象的一部分,这些应用程序可能已经或可能没有定义自己的信号处理方法.
谢谢
可能重复:
无法在php中的会话中传递mysqli连接
我们中的许多人编写了需要数据库的PHP应用程序; 主要是MySQL,但我经常使用非常小的MS Access数据库,因为技术能力较差的人可以下载调整它们/保存备份/等等.在他们自己(这是否正确,我不知道).
我注意到的是,花了很多时间来连接和运行一些相同的查询.因此,我有一个有趣的想法:存储连接和可能的结果集,这些结果集在$_SESSION变量中大部分是静态的,以减轻用户导航网站时的负担.
显然这样做需要很多考虑.在会话被销毁时关闭连接的事情只是一个开始.
我的问题归结为:这真的有可能吗?如果是这样,我应该注意哪些事情(除了会话固定,因为它是适用于所有会话的自身问题)?
我只是想把文字变成一个粗体GtkLabel.我能找到的只是Python和C#的例子.这是我目前如何设置GtkLabels,但我不知道如何使它们以粗体呈现文本.
GtkWidget* label = gtk_label_new("Text I want to be bold");
Run Code Online (Sandbox Code Playgroud)