我在另一个与urlencode()相关的论坛中问了一个问题,当一个人看起来轻快地说它绝对需要在它上面使用htmlentities时,并且还建议我每次写一个URL都应该这样做."为了有效和安全,他说".我不明白为什么它可能是一个安全问题.这是他提到的代码:
echo '<a href="index.php?' . htmlentities('page=encode&code='.urlencode($code).'&login='.urlencode($login).'&codeconf=' . urlencode($codeconf)) . '">';
Run Code Online (Sandbox Code Playgroud)
PHP手册确实提到了htmlentities.但没有进一步的解释:
注意... PHP支持通过arg_separator .ini指令将参数分隔符更改为W3C建议的分号.不幸的是,大多数用户代理不以这种分号分隔格式发送表单数据.一种更便携的方法是使用&而不是&作为分隔符.您不需要为此更改PHP的arg_separator.保留为&,但只需使用htmlentities()或htmlspecialchars()对您的URL进行编码.
我换成"&"通过与放大器; ,我在W3C验证器中验证了我的页面,它出来了.
我仍然担心这个问题.
我一直在收集有关如何防止日志页面上的暴力攻击或多个帐户创建的破坏的信息.
我得出结论(感谢Stackoverflow的人),最好的方法是使用验证码.
但是不方便阅读验证码或重音字符可能会阻止用户使用网站.
所以,我发现了一个易于使用的小脚本,我适应了我的网站.这是一个简单的数学验证码,建议总结从0到10的 2个数字.它显示的单词"一","两个","三个" ......而不是数字.
我的问题是:
1)这个小验证码本身是否提供足够的安全性?
2)我整合它的方式是否安全?(以任何方式绕过它?)
为了避免粘贴800行代码我做了总结,我希望很清楚.
验证码脚本:
$n1 = mt_rand(0,10);
$n2 = mt_rand(0,10);
$fig = array('zero','one','two','three','four','five','six','seven','eight','nine','ten');
$result = $n1 + $n2;
$sentence = $fig[$n1] .' plus '.$fig[$n2];
$_SESSION['captcha'] = $result;
$captcha_label = "<label for='captcha' >How much does ".$sentence."make?</label>";
echo $captcha_label."</label><input type='text' name='captcha' value=''/><br />";
echo "<input type='submit' name='create' value='create account'>";
Run Code Online (Sandbox Code Playgroud)
页数:
所有'创建帐户'输入字段+验证码
=>测试
test.php的:
if($_POST['captcha'] != $_SESSION['captcha']){
}
$_SESSION['captcha_control'] = "false";
然后所有'创建帐户' $ _POSTS都经过注射测试
如果它们中的任何一个或验证码返回"false",则脚本会偏转到=> …
我想用Filezilla从我的服务器下载php文件,以备份它们并在我的计算机上备份它们.因此,在进行任何代码更改之前,我一定会拥有以前工作的最新版本.在晚上累了的时候,很容易覆盖现有的文件.
但是当我下载文件时,它们会在Notepad ++中打开,每行代码之间都有一个空行.它不再可读,它使800行页面成为1600行!逐个删除每个空行会让你发疯.
有没有一种快速的方法来删除之后的空白行或一种方法来防止这种情况发生?
谢谢
我正在建立我的第一个网站.它是一个在线房地产代理商.用户可以创建个人资料,然后插入广告并上传图片.
我被告知我应该检测多次记录尝试以防止暴力攻击.好吧,使用以下代码我检测到IP:
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{ $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];} else
{ $ip=$_SERVER['REMOTE_ADDR'];}
Run Code Online (Sandbox Code Playgroud)
系统会在一定延迟内计算错过的记录尝试次数,并在数据库中保留禁止列表.它很棒......至少在我自己测试的时候!
然后,当我被告知"通过虚假IP提防盗版"时,我得到的印象是我上面提到的保护系统无效.
有 :
1)包含可以隐藏其真实IP的代理的pirat可用的软件
2)网络上的代理也可以隐藏真实的IP.
1)和2)有什么区别?
我想知道如何使用代理以及它们在非法行为方面能够做些什么
非常感谢.
以下代码运行良好,直到我向DB. 错误出在
INSERT零件上,在线mysqli_stmt_execute ( $stmt_2 );奇怪的是,UPDATE零件没有错误,使用相同的参数。我已经读了几个小时相同的行了,但我没有看到解析错误的原因。
$bdd = mysqli_connect('localhost', 'root', '', 'webpage');
if ( mysqli_connect_errno() ) { printf("Connect failed: %s\n", mysqli_connect_error()); exit(); }
$num = NULL ;
$oferta = $_POST['oferta'];
$titulo = $_POST['titulo'];
$desd = NULL ;
$hast = NULL ;
$descuen = NULL ;
$tipo_hab = NULL ;
$dias_min = NULL ;
mysqli_set_charset ( $bdd , 'utf8' );
$stmt_1 = mysqli_stmt_init($bdd);
$query = "SELECT num FROM promo"; //.......................... counting offers
if ( …Run Code Online (Sandbox Code Playgroud)