Xuxuan #48
Loading…
Reference in New Issue
There is no content yet.
Delete Branch "Xuxuan"
Deleting a branch is permanent. Although the deleted branch may exist for a short time before cleaning up, in most cases it CANNOT be undone. Continue?
@ -9,3 +9,3 @@
// 修改这一行设置你的文件下载目录
// IMPORTANT: Do not delete the following conditional test
if (strpos($_GET['file'], "../") != false) { // 检查是否有 ../,防止用户构造路径,访问某个他不应该访问的目录
if (strpos($_GET['file'], "../") !== false) { // 检查是否有 ../,防止用户构造路径,访问某个他不应该访问的目录
@xuxuan
我理解了。当
'../'
是在最左边位置时,strpos 返回 0, 而0 != false
是不成立的, 所以不会die("Sorry. Nothing to download.")
;改正后,
0 !== false
成立。https://www.php.net/manual/en/function.strpos.php 中的Example#1, Example#2 说明了这个问题。
Hui
@ -11,2 +11,2 @@
$token=$_GET['token'];
$email=$_GET['email'];
$token=htmlspecialchars($_GET['token']);
$email=htmlspecialchars($_GET['email']);
@xuxuan
多谢。
htmlspecialchars 将特殊字符转化为 HTML entities。 要不要设置 ENT_QUOTES 选项, 将引号也转化一下?
还有, 是不是要把程序中所有出现过
$_GET
的地方, 都包上htmlspecialchars
调用?还是只有在变量用于SQL语句时才需要?Hui
htmlspecialchars的作用是防止xss,主要是将<(小于号)变为<和>(大于号)变为> 防止输入html标签,在可能存在xss的地方使用就可以了
@xuxuan
今天上课展示后我懂多了。
就是如果不加 htmlspecialchars 转义, 学生可以通过在重新改分理由中构造 script 语句,将该语句存入 LRR 数据库, 等老师查看重新改分理由时, 将老师的cookies发送到指定位置。这种攻击叫做 Stored XSS。我的理解对吗?
Hui
@ -249,3 +249,3 @@
// Password Update
$hashed_password = hash('sha512', $password);
$sql = "UPDATE users_table set HashPassword='$hashed_password' where User_ID=$userid;";
$sql = "UPDATE users_table set HashPassword='$hashed_password' where User_ID='$userid';";
@xuxuan
多谢,加上单引号的作用是啥?
Hui
通过mysqli_real_escape_string防止sql注入的原因是其会将一些特殊符号转义,例如将输入的'转义为\',从而防止sql注入。拼接的变量没有被单引号或双引号包裹mysqli_real_escape_string也就失去了作用
@xuxuan
Thanks
如果对所有的SQL变量,先使用下面链接中的
check_input
函数(见“预防数据库攻击的正确做法”),可以预防SQL注入问题吗?https://www.w3school.com.cn/php/func_mysql_real_escape_string.asp
Hui
在数据库编码不为中文的情况下是可以的,除了对输入做check_input处理,对数据库中取出来的数据同样也要进行check_input
@xuxuan
下次上课时问问你一些细节,然后再合并。
Thanks
@xuxuan
关于xss漏洞的原理与一些补充说明.pdf中第7-8页提到的问题,有解决方法吗?
用函数 str_replace 直接替换掉 script ?
-蓝珲
xss不一定需要使用script标签
例如
<img src=0 onerror=alert(1)>
有防御xss更好的方法是使用csp策略