如何清理和验证用户输入,以便他们查询您的搜索引擎索引?

nhhxz33t  于 2021-09-29  发布在  Java
关注(0)|答案(0)|浏览(148)

关闭。这个问题需要详细或明确。它目前不接受答案。
**想改进这个问题吗?**编辑这篇文章,添加细节并澄清问题。

两天前关门了。
改进这个问题
我需要在我的网站上的搜索框中验证用户输入。试图建立一个像谷歌这样的搜索引擎。
在单击“搜索”按钮之前,需要确保搜索框不为空。
需要确保没有用户能够侵入我的mysql数据库。
需要确保没有用户能够劫持任何恶意网站的其他访问者。
需要确保没有用户能够插入sql命令。
需要确保没有用户能够注入html来分解页面。
需要确保在键盘(比如qwerty键盘)上找到的所有字符(字母、数字、符号)都可以在搜索框中键入,并且可以在mysql数据库中搜索(注:以上,我给了你6个要求。我应该再吃一点吗?如果是,它们是什么?)。
最初,我的代码是这样的:

//Check if "search term" exists or not in Url's Query String.
if(!ISSET($_REQUEST['find']) || empty(trim($_REQUEST['find'])) || !is_string(trim($_REQUEST['find']))) //Using $_REQUEST[] for both $_REQUEST['POST'] & $_REQUEST['REQUEST'].
{
    die('Enter Keywords to search!');
}
else
{
    if(in_array(trim($_REQUEST['find']),$blacklisted_words)) //Keyword(s) to search.
    {
        die('Your search terms contains a banned word! Try some other keywords');
    }
    else
    {
        $find = $_REQUEST['find']; //Not trimming or ridding trailing spaces here as user's keyword (eg. foreign keywords or symbols) may actually contain such spaces.

现在,我明白了:“旁注:同时使用isset()&&&是毫无意义的!同一if中的empty()。只是使用!空()就足够了哪个while循环是4的有效ouit?
因此,我的代码如下所示,需要您检查并在必要时进行修改:

$blacklisted_words = array('prick','dick');

//Check if "search term" exists or not in Url's Query String.
if(empty(trim($_REQUEST['find'])) || !is_string(trim($_REQUEST['find']))) //Using $_REQUEST[] for both $_REQUEST['POST'] & $_REQUEST['REQUEST'].
{
    die('Enter Keywords to search!');
}
else
{
    if(in_array(trim($_REQUEST['find']),$blacklisted_words)) //Keyword(s) to search.
    {
        die('Your search terms contains a banned word! Try some other keywords');
    }

我不确定是否应该删除此部分,因为我确实希望允许用户搜索符号,例如:@#^&*()u-=+[]{};:'“|<>?,”/`~

!is_string(trim($_REQUEST['find']))

必须允许用户搜索符号,因为他们可以根据这些符号搜索教程网站。
简言之,如果您正在构建自己的搜索引擎,那么您将如何对其进行编码以清理和/或验证搜索框上的用户输入,该搜索框查询您的搜索引擎索引(mysql数据库),同时牢记安全主题,从而使您的数据库、网页等不受黑客、劫持、sql注入、html注入、跨站点攻击,注入javascript等?我不知道;我没有太多的跨站点攻击的经验,所以我最担心的是。必须确保我的网站不会发生这种情况。需要在我的编码中采取措施。保护我的网站和数据库。我非常感谢来自每个贡献者的代码示例,因为这将教会我各种各样的编码风格。并就此引发建设性的辩论。无论编程专业知识或经验的水平如何,我们总能从对方身上学到一两件事。我将使用准备好的语句来防止sql注入。通过浏览这里,您可以看到我的完整代码的示例:哪个while循环是4的有效ouit?因此,不要浪费时间让您在这里重复同样的代码(分页页面代码)。在这里,我们只关注如何在我的搜索引擎的搜索框中验证用户的输入。专注于如何处理$_post[find']上的输入;
搜索框html

<html>
<head>
<title>
Searchengine Result Page
</title>
</head>
<body>

<form method = 'GET' action = "">
<label for='find'>Find</label>
<input type='text' name='find' id='find'>
<br>
Table:
<input type='radio' name='table' id='sale' value='sale'><label for='sale'>Websites On Sale</label>
<input type='radio' name='table' id='sold' value='sold'><label for='sold'>Websites Sold</label>
<input type='radio' name='table' id='links' value='links'><label for='links'>Links</label>
<br>
<label for="column">Column:</label>
<select name="column" id="column">
    <option value=""></option>
    <option value="domain">Domain</option>
    <option value="email">Email</option>
    <option value="submission_id">Submission Id</option>
    <option value="url">Url</option>
    <option value="anchor">Anchor</option>
    <option value="description">Description</option>
    <option value="keyword">Keyword</option>
    </select>
<br>
<button type='submit'>Search!</button>
</form>
</body>
</html>

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题