用户使用PHP提交的链接的安全规则

|| 我正在为一个大学项目。在每门课程中,允许老师输入他们希望学生看到的链接。教师还可以允许学生自己发布链接。 但是,您可以在文本字段中直接输入任何内容,这意味着您可以发布恶意链接,当然我也不想这样做。 有什么好的“规则”可以阻止您发布任何内容?例如:我在想也许在字符串的第一部分搜索\“ http:// \”,以确保它不是JavaScript或其他名称。 提前致谢。     
已邀请:
        尝试过滤输入将被证明是无济于事的,因为它很容易被绕过,您需要承担责任。由于上下文是一门大学课程,因此您的团队相对较小,具有可验证的身份,这使问责制变得像以往一样容易。 只需确保用户名与他们发布的链接相关联,并提醒人们注意保护其登录凭据的重要性。 如果人们发布不适当的材料,则他们的帐户可能会被暂停或只读,或者可以采取其他措施。   我在想也许在字符串的第一部分搜索\“ http:// \”,以确保它不是JavaScript或其他名称。 如果是
https://
怎么办?如果网址中包含“ 1”字符怎么办? 通过htmlentities运行输入。这样可以保护您免受破坏HTML的代码(故意的和无意的)的伤害。     
        是的,检查URL前缀肯定会有所帮助。还要检查有效的URL字符。 可以使用PHP和Regex轻松完成-http://phpcentral.com/208-url-validation-in-php.html 希望能有所帮助。     
        我会使用strip_tags和htmlentities,然后使用preg_replace将所有链接放在ѭ2中。     
        当然,您应该确保在显示链接时将其转义为html(使用ut3的
htmlentities()
作为字符集)。 当然,确保开头没有http://是避免用户单击链接时执行javascript的好主意。 在那之后,避免别人发布恶意链接无济于事。 Google首先使用链接将其重定向到页面,并警告用户将其重定向到潜在的恶意网站。     
        您可以使用正则表达式测试输入值。 这是与任何有效的URL地址都匹配的,别无其他:
/^(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?$/
这是在PHP中使用它的方式:
function validateURL($url)
{
    return preg_match(\"/^(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?$/\", $url);
}
    
        这是什么问题? :) 我的意思是:
$link = htmlentities($_POST[\'link\']);
$link = str_replace(\'http://\',\'\',$link);
$link = \'http://\'.$link;

echo $link;
就像其他悲伤的事情一样……您处在一个拥有帐户的人圈子中,只需将人们对日期时间所做的事情推入数据库,您将始终知道是谁,什么时候,什么时候;)     
        我不确定是否可以,因为如果有人真的想伤害他人,他或她可以创建一个正常的网页,将其重定向到恶意网页...最好的保护方法是: 从技术上讲:使用ѭ7来防止人们在该字段中输入javascript,并使用ѭ8来确保字符编码正确。 合法:在链接不能恶意的地方写上。     

要回复问题请先登录注册